From 0f7b3a1da2ffac420d3bf994565ebcf48a17f330 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Thu, 8 Jul 2021 17:01:16 -0400 Subject: [PATCH 01/23] Created empty symba_classes module --- Makefile | 1 + src/modules/helio_classes.f90 | 1 - src/modules/swiftest.f90 | 2 +- src/modules/symba_classes.f90 | 43 +++++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/modules/symba_classes.f90 diff --git a/Makefile b/Makefile index dfc6fd5c0..c1945c17a 100644 --- a/Makefile +++ b/Makefile @@ -50,6 +50,7 @@ SWIFTEST_MODULES = swiftest_globals.f90 \ whm_classes.f90 \ rmvs_classes.f90 \ helio_classes.f90 \ + symba_classes.f90 \ util.f90 \ module_nrutil.f90 \ swiftest.f90 diff --git a/src/modules/helio_classes.f90 b/src/modules/helio_classes.f90 index d97a1608c..b7671883a 100644 --- a/src/modules/helio_classes.f90 +++ b/src/modules/helio_classes.f90 @@ -32,7 +32,6 @@ module helio_classes !! Helio massive body particle class type, public, extends(swiftest_pl) :: helio_pl - real(DP), dimension(:,:), allocatable :: ahi !! heliocentric acceleration due to interactions contains procedure, public :: vh2vb => helio_coord_vh2vb_pl !! Convert massive bodies from heliocentric to barycentric coordinates (velocity only) procedure, public :: vb2vh => helio_coord_vb2vh_pl !! Convert massive bodies from barycentric to heliocentric coordinates (velocity only) diff --git a/src/modules/swiftest.f90 b/src/modules/swiftest.f90 index 951f2c010..2b8749e2f 100644 --- a/src/modules/swiftest.f90 +++ b/src/modules/swiftest.f90 @@ -9,7 +9,7 @@ module swiftest use whm_classes use rmvs_classes use helio_classes - !use symba_classes + use symba_classes use util use module_nrutil !use advisor_annotate diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 new file mode 100644 index 000000000..1b3261f62 --- /dev/null +++ b/src/modules/symba_classes.f90 @@ -0,0 +1,43 @@ +module symba_classes + !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott + !! + !! Definition of classes and methods specific to the Democratic Heliocentric Method + !! Adapted from David E. Kaufmann's Swifter routine: helio.f90 + use swiftest_globals + use helio_classes, only : helio_cb, helio_pl, helio_tp, helio_nbody_system + implicit none + + + !******************************************************************************************************************************** + ! symba_nbody_system class definitions and method interfaces + !******************************************************************************************************************************** + type, public, extends(helio_nbody_system) :: symba_nbody_system + contains + end type symba_nbody_system + + !******************************************************************************************************************************** + ! symba_cb class definitions and method interfaces + !******************************************************************************************************************************* + !> Helio central body particle class + type, public, extends(helio_cb) :: symba_cb + contains + end type symba_cb + + !******************************************************************************************************************************** + ! symba_pl class definitions and method interfaces + !******************************************************************************************************************************* + + !! Helio massive body particle class + type, public, extends(helio_pl) :: symba_pl + contains + end type symba_pl + + !******************************************************************************************************************************** + ! symba_tp class definitions and method interfaces + !******************************************************************************************************************************* + + !! Helio test particle class + type, public, extends(helio_tp) :: symba_tp + contains + end type symba_tp +end module symba_classes \ No newline at end of file From 5b3cad1de395663cedea756d13b288574dc4badd Mon Sep 17 00:00:00 2001 From: David A Minton Date: Thu, 8 Jul 2021 17:18:46 -0400 Subject: [PATCH 02/23] Added template methods for stepping the system --- src/modules/symba_classes.f90 | 23 +++++ src/symba/symba_step.f90 | 156 ++++++++-------------------------- 2 files changed, 57 insertions(+), 122 deletions(-) diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 1b3261f62..2aadd86e0 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -13,6 +13,9 @@ module symba_classes !******************************************************************************************************************************** type, public, extends(helio_nbody_system) :: symba_nbody_system contains + private + procedure, public :: step => symba_step_system !! Advance the SyMBA nbody system forward in time by one step + procedure, public :: interp => symba_step_interp_system !! Perform an interpolation step on the SymBA nbody system end type symba_nbody_system !******************************************************************************************************************************** @@ -40,4 +43,24 @@ module symba_classes type, public, extends(helio_tp) :: symba_tp contains end type symba_tp + + interface + module subroutine symba_step_system(self, param, t, dt) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_nbody_system), intent(inout) :: self !! RMVS nbody system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + real(DP), intent(in) :: t !! Simulation time + real(DP), intent(in) :: dt !! Current stepsize + end subroutine symba_step_system + + module subroutine symba_step_interp_system(self, param, t, dt) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_nbody_system), intent(inout) :: self !! RMVS nbody system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + real(DP), intent(in) :: t !! Simulation time + real(DP), intent(in) :: dt !! Current stepsize + end subroutine symba_step_interp_system + end interface end module symba_classes \ No newline at end of file diff --git a/src/symba/symba_step.f90 b/src/symba/symba_step.f90 index cb1361833..d3b189bfa 100644 --- a/src/symba/symba_step.f90 +++ b/src/symba/symba_step.f90 @@ -1,127 +1,39 @@ -submodule (symba) s_symba_step +submodule (symba_classes) s_symba_step + use swiftest contains - module procedure symba_step - !! author: David A. Minton - !! - !! Step planets and active test particles ahead in democratic heliocentric coordinates, descending the recursive - !! branch if necessary to handle possible close encounters - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step.f90 - !! Adapted from Hal Levison's Swift routine symba5_step_pl.f -use swiftest -implicit none - logical :: lencounter, lvdotr - integer(I4B) :: i, j, irec, nplm - real(DP), dimension(NDIM) :: xr, vr - logical, save :: lfirst = .true. - -! executable code - - do i = 1,npl - symba_plA%nplenc(i) = 0 - symba_plA%ntpenc(i) = 0 - symba_plA%levelg(i) = -1 - symba_plA%levelm(i) = -1 - symba_plA%index_parent(i) = i - symba_plA%index_child(:,i) = 0 - end do - do i =1,ntp - symba_tpA%nplenc(i) = 0 - symba_tpA%levelg(i) = -1 - symba_tpA%levelm(i) = -1 - end do - - - !there should be some parallel bits in here - - nplplenc = 0 - npltpenc = 0 - if (symba_plA%mass(1) < param%mtiny) then - nplm = 0 - else - nplm = 1 - end if - irec = 0 - -! all this needs to be changed to the tree search function for encounters - - do i = 2, npl - if (symba_plA%mass(i) < param%mtiny) exit - nplm = nplm + 1 - do j = i + 1, npl - xr(:) = symba_plA%xh(:,j) - symba_plA%xh(:,i) - vr(:) = symba_plA%vh(:,j) - symba_plA%vh(:,i) - call symba_chk(xr(:), vr(:), symba_plA%rhill(i), & - symba_plA%rhill(j), dt, irec, lencounter, lvdotr) - if (lencounter) then - nplplenc = nplplenc + 1 - if (nplplenc > nenmax) then - write(*, *) "Swiftest Error:" - write(*, *) " pl-pl encounter list is full." - write(*, *) " stopping..." - call util_exit(FAILURE) - end if - plplenc_list%status(nplplenc) = ACTIVE - plplenc_list%lvdotr(nplplenc) = lvdotr - plplenc_list%level(nplplenc) = irec - plplenc_list%index1(nplplenc) = i - plplenc_list%index2(nplplenc) = j - symba_plA%lmerged(i) = .false. - symba_plA%nplenc(i) = symba_plA%nplenc(i) + 1 - symba_plA%levelg(i) = irec - symba_plA%levelm(i) = irec - symba_plA%nchild(i) = 0 - symba_plA%lmerged(j) = .false. - symba_plA%nplenc(j) = symba_plA%nplenc(j) + 1 - symba_plA%levelg(j) = irec - symba_plA%levelm(j) = irec - symba_plA%nchild(j) = 0 - end if - end do - do j = 1, ntp - xr(:) = symba_tpA%xh(:,j) - symba_plA%xh(:,i) - vr(:) = symba_tpA%vh(:,j) - symba_plA%vh(:,i) - call symba_chk(xr(:), vr(:), symba_plA%rhill(i), 0.0_DP, dt, irec, lencounter, lvdotr) - if (lencounter) then - npltpenc = npltpenc + 1 - symba_plA%ntpenc(i) = symba_plA%ntpenc(i) + 1 - symba_plA%levelg(i) = irec - symba_plA%levelm(i) = irec - symba_tpA%nplenc(j) = symba_tpA%nplenc(j) + 1 - symba_tpA%levelg(j) = irec - symba_tpA%levelm(j) = irec - if (npltpenc > nenmax) then - write(*, *) "Swiftest Error:" - write(*, *) " pl-tp encounter list is full." - write(*, *) " stopping..." - call util_exit(FAILURE) + module subroutine symba_step_system(self, param, t, dt) + !! author: David A. Minton + !! + !! Step planets and active test particles ahead in democratic heliocentric coordinates, descending the recursive + !! branch if necessary to handle possible close encounters + !! + !! Adapted from David E. Kaufmann's Swifter routine: symba_step.f90 + !! Adapted from Hal Levison's Swift routine symba5_step_pl.f + implicit none + ! Arguments + class(symba_nbody_system), intent(inout) :: self !! SyMBA nbody system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + real(DP), intent(in) :: t !! Simulation time + real(DP), intent(in) :: dt !! Current stepsize + ! Internals + logical :: lencounter_pl, lencounter_tp, lencounter + + select type(pl => self%pl) + class is (symba_pl) + select type(tp => self%tp) + class is (symba_tp) + lencounter_pl = pl%encounter_check(system, dt) + lencounter_tp = tp%encounter_check(system, dt) + lencounter = lencounter_pl .or. lencounter_tp + if (lencounter) then + call self%interp(param, t, dt) + else + call helio_step_system(self, param, t, dt) end if - pltpenc_list%status(npltpenc) = ACTIVE - pltpenc_list%lvdotr(npltpenc) = lvdotr - pltpenc_list%level(npltpenc) = irec - pltpenc_list%indexpl(npltpenc) = i - pltpenc_list%indextp(npltpenc) = j - end if - end do - end do - -! end of things that need to be changed in the tree - - lencounter = ((nplplenc > 0) .or. (npltpenc > 0)) - if (lencounter) then - call symba_step_interp(param%lextra_force, param%lclose, t, npl, nplm, param%nplmax, & - ntp, param%ntpmax, symba_plA, symba_tpA, param%j2rp2, param%j4rp4, & - dt, eoffset, nplplenc, npltpenc, plplenc_list, pltpenc_list, nmergeadd, & - nmergesub, mergeadd_list, mergesub_list, param%encounter_file, param%out_type, & - fragmax, param) - lfirst = .true. - else - call symba_step_helio(lfirst, param%lextra_force, t, npl, nplm, param%nplmax, ntp,& - param%ntpmax, symba_plA, symba_tpA, & - param%j2rp2, param%j4rp4, dt) - end if + end select + end select - return + return - end procedure symba_step + end subroutine symba_step_system end submodule s_symba_step From 99017ad7e50a00a78af19765bc4f140394b0bfff Mon Sep 17 00:00:00 2001 From: David A Minton Date: Thu, 8 Jul 2021 20:59:45 -0400 Subject: [PATCH 03/23] Removed old style SyMBA subroutines in order to start fresh --- src/symba/symba_casedisruption.f90 | 294 --------------------- src/symba/symba_casehitandrun.f90 | 271 ------------------- src/symba/symba_casemerge.f90 | 129 --------- src/symba/symba_caseresolve.f90 | 46 ---- src/symba/symba_casesupercatastrophic.f90 | 253 ------------------ src/symba/symba_chk.f90 | 26 -- src/symba/symba_chk_eucl.f90 | 73 ----- src/symba/symba_chk_eucl_pltp.f90 | 72 ----- src/symba/symba_discard_merge_pl.f90 | 127 --------- src/symba/symba_discard_peri_pl.f90 | 42 --- src/symba/symba_discard_pl.f90 | 28 -- src/symba/symba_discard_sun_pl.f90 | 49 ---- src/symba/symba_discard_tp.f90 | 21 -- src/symba/symba_fragmentation.f90 | 221 ---------------- src/symba/symba_getacch.f90 | 91 ------- src/symba/symba_getacch_eucl.f90 | 96 ------- src/symba/symba_getacch_tp.f90 | 83 ------ src/symba/symba_getacch_tp_eucl.f90 | 85 ------ src/symba/symba_helio_drift.f90 | 38 --- src/symba/symba_helio_drift_tp.f90 | 28 -- src/symba/symba_helio_getacch.f90 | 50 ---- src/symba/symba_helio_getacch_int.f90 | 31 --- src/symba/symba_kick.f90 | 104 -------- src/symba/symba_merge_pl.f90 | 221 ---------------- src/symba/symba_merge_tp.f90 | 65 ----- src/symba/symba_peri.f90 | 89 ------- src/symba/symba_rearray.f90 | 182 ------------- src/symba/symba_reorder_pl.f90 | 67 ----- src/symba/symba_set_initial_conditions.f90 | 36 --- src/symba/symba_spill_pl.f90 | 46 ---- src/symba/symba_spill_tp.f90 | 33 --- src/symba/symba_step_eucl.f90 | 156 ----------- src/symba/symba_step_helio.f90 | 24 -- src/symba/symba_step_helio_pl.f90 | 52 ---- src/symba/symba_step_interp.f90 | 72 ----- src/symba/symba_step_interp_eucl.f90 | 73 ----- src/symba/symba_step_recur.f90 | 226 ---------------- src/symba/symba_user_getacch.f90 | 17 -- src/symba/symba_user_getacch_tp.f90 | 22 -- 39 files changed, 3639 deletions(-) delete mode 100644 src/symba/symba_casedisruption.f90 delete mode 100644 src/symba/symba_casehitandrun.f90 delete mode 100644 src/symba/symba_casemerge.f90 delete mode 100644 src/symba/symba_caseresolve.f90 delete mode 100644 src/symba/symba_casesupercatastrophic.f90 delete mode 100644 src/symba/symba_chk.f90 delete mode 100644 src/symba/symba_chk_eucl.f90 delete mode 100644 src/symba/symba_chk_eucl_pltp.f90 delete mode 100644 src/symba/symba_discard_merge_pl.f90 delete mode 100644 src/symba/symba_discard_peri_pl.f90 delete mode 100644 src/symba/symba_discard_pl.f90 delete mode 100644 src/symba/symba_discard_sun_pl.f90 delete mode 100644 src/symba/symba_discard_tp.f90 delete mode 100644 src/symba/symba_fragmentation.f90 delete mode 100644 src/symba/symba_getacch.f90 delete mode 100644 src/symba/symba_getacch_eucl.f90 delete mode 100644 src/symba/symba_getacch_tp.f90 delete mode 100644 src/symba/symba_getacch_tp_eucl.f90 delete mode 100644 src/symba/symba_helio_drift.f90 delete mode 100644 src/symba/symba_helio_drift_tp.f90 delete mode 100644 src/symba/symba_helio_getacch.f90 delete mode 100644 src/symba/symba_helio_getacch_int.f90 delete mode 100644 src/symba/symba_kick.f90 delete mode 100644 src/symba/symba_merge_pl.f90 delete mode 100644 src/symba/symba_merge_tp.f90 delete mode 100644 src/symba/symba_peri.f90 delete mode 100644 src/symba/symba_rearray.f90 delete mode 100644 src/symba/symba_reorder_pl.f90 delete mode 100644 src/symba/symba_set_initial_conditions.f90 delete mode 100644 src/symba/symba_spill_pl.f90 delete mode 100644 src/symba/symba_spill_tp.f90 delete mode 100644 src/symba/symba_step_eucl.f90 delete mode 100644 src/symba/symba_step_helio.f90 delete mode 100644 src/symba/symba_step_helio_pl.f90 delete mode 100644 src/symba/symba_step_interp.f90 delete mode 100644 src/symba/symba_step_interp_eucl.f90 delete mode 100644 src/symba/symba_step_recur.f90 delete mode 100644 src/symba/symba_user_getacch.f90 delete mode 100644 src/symba/symba_user_getacch_tp.f90 diff --git a/src/symba/symba_casedisruption.f90 b/src/symba/symba_casedisruption.f90 deleted file mode 100644 index bd8f03330..000000000 --- a/src/symba/symba_casedisruption.f90 +++ /dev/null @@ -1,294 +0,0 @@ -submodule (symba) s_symba_casedisruption -contains - module procedure symba_casedisruption - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Disruptive Collision - use swiftest -implicit none - integer(I4B) :: nfrag, i, k, index1, index2, frags_added - integer(I4B) :: index1_parent, index2_parent - integer(I4B) :: name1, name2, nstart - real(DP) :: mtot, msun, avg_d, d_p1, d_p2, semimajor_encounter, e, q, semimajor_inward - real(DP) :: rhill_p1, rhill_p2, r_circle, theta, radius1, radius2, r_smallestcircle - real(DP) :: m_rem, m_test, mass1, mass2, enew, eold, a, b, v_col - real(DP) :: x_com, y_com, z_com, vx_com, vy_com, vz_com - real(DP) :: x_frag, y_frag, z_frag, vx_frag, vy_frag, vz_frag - real(DP), dimension(NDIM) :: vnew, xr, mv, l, kk, p - - !temporary - interface - function cross_product_disruption(ar1,ar2) result(ans) - use swiftest - implicit none - real(DP),dimension(3),intent(in) :: ar1,ar2 - real(DP),dimension(3) :: ans - end function cross_product_disruption - end interface - -! executable code - - write(*,*) "entering casedisruption" - ! set the maximum number of fragments to be added in a disruption collision (nfrag) - nfrag = 5 - ! pull in the information about the two particles involved in the collision - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - index1_parent = symba_plA%index_parent(index1) - index2_parent = symba_plA%index_parent(index2) - name1 = symba_plA%name(index1) - name2 = symba_plA%name(index2) - mass1 = symba_plA%mass(index1) ! the mass of the first particle in the collision not including all it's children - mass2 = symba_plA%mass(index2) - radius1 = symba_plA%radius(index1) - radius2 = symba_plA%radius(index2) - msun = symba_plA%mass(1) - - ! find com - x_com = ((x1(1) * m1) + (x2(1) * m2)) / (m1 + m2) - y_com = ((x1(2) * m1) + (x2(2) * m2)) / (m1 + m2) - z_com = ((x1(3) * m1) + (x2(3) * m2)) / (m1 + m2) - - vx_com = ((v1(1) * m1) + (v2(1) * m2)) / (m1 + m2) - vy_com = ((v1(2) * m1) + (v2(2) * m2)) / (m1 + m2) - vz_com = ((v1(3) * m1) + (v2(3) * m2)) / (m1 + m2) - - ! find collision velocity - v_col = norm2(v2(:) - v1(:)) - - ! find energy pre-frag - eold = 0.5_DP*(m1*dot_product(v1(:), v1(:)) + m2*dot_product(v2(:), v2(:))) - xr(:) = x2(:) - x1(:) - eold = eold - (m1*m2/(norm2(xr(:), xr(:))))) - - write(*, *) "disruption between particles ", name1, " and ", name2, " at time t = ",t - - ! add both particles involved in the collision to mergesub_list - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name1 - mergesub_list%status(nmergesub) = DISRUPTION - mergesub_list%xh(:,nmergesub) = x1(:) - mergesub_list%vh(:,nmergesub) = v1(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass1 - mergesub_list%radius(nmergesub) = radius1 - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name2 - mergesub_list%status(nmergesub) = DISRUPTION - mergesub_list%xh(:,nmergesub) = x2(:) - mergesub_list%vh(:,nmergesub) = v2(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass2 - mergesub_list%radius(nmergesub) = radius2 - - ! go through the encounter list and look for particles actively encoutering in this timestep - ! prevent them from having further encounters in this timestep by setting status in plplenc_list to merged - do k = 1, nplplenc - if ((plplenc_list%status(k) == ACTIVE) .and. & - ((index1 == plplenc_list%index1(k) .or. index2 == plplenc_list%index2(k)) .or. & - (index2 == plplenc_list%index1(k) .or. index1 == plplenc_list%index2(k)))) then - plplenc_list%status(k) = MERGED - end if - end do - - ! set the status of the particles in symba_plA to disruption - symba_plA%status(index1) = DISRUPTION - symba_plA%status(index2) = DISRUPTION - - l(:) = (v2(:) - v1(:)) / norm2(v2(:)-v1(:)) - p(:) = cross_product_disruption(xr(:) / norm2(xr(:)), l(:)) - kk(:) = cross_product_disruption(l(:),p(:)) - - rhill_p1 = symba_plA%rhill(index1_parent) - rhill_p2 = symba_plA%rhill(index2_parent) - r_smallestcircle = (rhscale * rhill_p1 + rhscale * rhill_p2) / (2.0_DP * sin(pi / 2.0_DP)) - - ! check that no fragments will be added interior of the smallest orbit that the timestep can reliably resolve - semimajor_inward = ((dt * 32.0_DP) ** 2.0_DP) ** (1.0_DP / 3.0_DP) - call orbel_xv2aeq(x1, v1, msun, semimajor_encounter, e, q) - ! if they are going to be added interior to this orbit, give a warning - if (semimajor_inward > (semimajor_encounter - r_smallestcircle)) then - write(*,*) "warning in symba_casedisruption: timestep is too large to resolve fragments." - end if - ! if not, continue through all possible fragments to be added - mtot = 0.0_DP ! running total mass of new fragments - mv = 0.0_DP ! running sum of m*v of new fragments to be used in com calculation - frags_added = 0 ! running total number of new fragments - nstart = nmergeadd ! start of new fragments in mergeadd_list - - d_p1 = (3.0_DP * m1) / (4.0_DP * pi * (rad1 ** 3.0_DP)) - d_p2 = (3.0_DP * m2) / (4.0_DP * pi * (rad2 ** 3.0_DP)) - avg_d = ((m1 * d_p1) + (m2 * d_p2)) / (m1 + m2) - - !do i = 1, nfrag - ! if we are adding the first and largest fragment (lr), it's mass and radius should be taken from - ! util_regime while it's position and velocity should be calculated on the circle of radius - ! r_circle as described above. - !if (i == 1) then - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = DISRUPTION - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%mass(nmergeadd) = mres(1) - mergeadd_list%radius(nmergeadd) = rres(1) - mtot = mtot + mergeadd_list%mass(nmergeadd) - !end if - ! if we are adding the second fragment (slr), it's mass and radius should be taken from - ! util_regime while it's position and velocity should be calculated on the circle of - ! radius r_circle as described above. - if ((mres(2) > (1.0_DP / 3.0_DP)*mres(1))) then - write(*,*) "casedisruption 1st if" - ! frags_added is the actual number of fragments added to the simulation vs nfrag which is the total possible - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = DISRUPTION - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%mass(nmergeadd) = mres(2) - mergeadd_list%radius(nmergeadd) = rres(2) - mtot = mtot + mergeadd_list%mass(nmergeadd) - do i = 3, nfrag - write(*,*) "casedisruption 1st do" - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = DISRUPTION - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - m_rem = (m1 + m2) - (mres(1) + mres(2)) - mergeadd_list%mass(nmergeadd) = m_rem / (nfrag - 1) - mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ** (1.0_DP / 3.0_DP) - mtot = mtot + mergeadd_list%mass(nmergeadd) - end do - end if - - if ((mres(2) < (1.0_DP / 3.0_DP)*mres(1))) then - write(*,*) "casedisruption 2nd if" - do i = 2, nfrag - write(*,*) "casedisruption 2nd do" - m_rem = (m1 + m2) - mres(1) - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%status(nmergeadd) = DISRUPTION - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%mass(nmergeadd) = m_rem / (nfrag - 1) - mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ** (1.0_DP / 3.0_DP) - mtot = mtot + mergeadd_list%mass(nmergeadd) - end do - end if - - ! if we are doing more fragments - !if ((i > 2) .and. (mres(2) > (1.0_DP / 3.0_DP)*mres(1))) then - ! m_rem is the mass needed to be "made up for" in fragments, mres(1) and mres(2) are the mass of the largest - ! and second largest fragments that have already been added, and m1 and m2 are the masses of the original - ! particles involved in the collision. - !frags_added = frags_added + 1 - !nmergeadd = nmergeadd + 1 - !mergeadd_list%status(nmergeadd) = DISRUPTION - !mergeadd_list%ncomp(nmergeadd) = 2 - !mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - !m_rem = (m1 + m2) - (mres(1) + mres(2)) - !mergeadd_list%mass(nmergeadd) = m_rem / (nfrag - 1) - !mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ! ** (1.0_DP / 3.0_DP) - !mtot = mtot + mergeadd_list%mass(nmergeadd) - - !write(*,*) "casedisruption mres(1) and mres(2)", mres(1), mres(2) - - ! check if these fragments will be large enough to be resolved - !if (m_rem > (m2) / 100.0_DP) then - ! if yes, add a fragment using durda et al 2007 figure 2 supercatastrophic: n = (1.5e5)e(-1.3*d) for the mass - - ! create a "test mass" using durda et al 2007 figure 2 supercatastrophic: n = (1.5e5)e(-1.3*d) - !m_test = (((- 1.0_DP / 2.6_DP) * log(i / (1.5_DP * 10.0_DP ** 5.0_DP))) ** 3.0_DP) * ((4.0_DP / 3.0_DP) & - ! * pi * avg_d) - ! if the test mass is smaller than the mass that needs to be "made up for", add it. - !if (m_test < m_rem) then - ! mergeadd_list%mass(nmergeadd) = m_test - ! if not, aka if the test mass is too large, then add a fragment with a mass equal to the difference between - ! the sum of the mass of the parents and the total mass already added. - !else - ! mergeadd_list%mass(nmergeadd) = m_rem !(m1 + m2) - mtot - !end if - - ! calculate the radius of the fragments using the weighted average density of the parents. - !mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ! ** (1.0_DP / 3.0_DP) - !mtot = mtot + mergeadd_list%mass(nmergeadd) - - ! if these fragments will not be large enough to be resolved, add the remaining mass that we need to - ! "make up for" to the mass of the most recent fragment and recalculate the radius. - !else - ! mergeadd_list%mass(nmergeadd) = mergeadd_list%mass(nmergeadd) + m_rem - ! mergeadd_list%radius(nmergeadd) = (((3.0_DP/4.0_DP) * pi) * (mergeadd_list%mass(nmergeadd) / avg_d)) & - ! ** (1.0_DP / 3.0_DP) - !end if - !end if - !end do - - ! calculate the positions of the new fragments in a circle with a radius large enough to space - ! all fragments apart by a distance of rhill_p1 + rhill_p2 - r_circle = (2.0_DP * rhill_p1 + 2.0_DP * rhill_p2) / (2.0_DP * sin(pi / frags_added)) - theta = (2.0_DP * pi) / frags_added - - do i=1, frags_added - write(*,*) "casedisruption 3rd do" - - !write(*,*) "casedisruption mfrag/mtot", mergeadd_list%mass(nstart + i) / (m1 + m2) - - ! increment around the circle for positions of fragments - x_frag = (r_circle * cos(theta * i))*l(1) + (r_circle * sin(theta * i))*p(1) + x_com - y_frag = (r_circle * cos(theta * i))*l(2) + (r_circle * sin(theta * i))*p(2) + y_com - z_frag = (r_circle * cos(theta * i))*l(3) + (r_circle * sin(theta * i))*p(3) + z_com - - a = v_col * (m1 + m2) * (1.0_DP / mergeadd_list%mass(nstart + i)) - - vx_frag = ((a * cos(theta * i))*l(1)) + ((a * sin(theta * i))*p(1)) + vx_com - vy_frag = ((a * cos(theta * i))*l(2)) + ((a * sin(theta * i))*p(2)) + vy_com - vz_frag = ((a * cos(theta * i))*l(3)) + ((a * sin(theta * i))*p(3)) + vz_com - - write(*,*) "casedisruption vx_frag", vx_frag - write(*,*) "casedisruption vy_frag", vy_frag - write(*,*) "casedisruption vz_frag", vz_frag - - !vx_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m1 * v1(1)) + (m2 * v2(1)))) + vx_com !- vbs(1) - !vy_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m1 * v1(2)) + (m2 * v2(2)))) + vy_com !- vbs(2) - !vz_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m1 + v1(3)) + (m2 * v2(3)))) + vz_com !- vbs(3) - - !write(*,*) "casedisruption vx_frag", vx_frag - !write(*,*) "casedisruption vy_frag", vy_frag - !write(*,*) "casedisruption vz_frag", vz_frag - - !conservation of angular momentum for velocities of fragments - !a = (((x1(2) * v1(3) * m1) - (x1(3) * v1(2) * m1)) + ((x2(2) * v2(3) * m2) - (x2(3) * v2(2) * m2))) & - ! / mergeadd_list%mass(nmergeadd) - !b = (((x1(3) * v1(1) * m1) - (x1(1) * v1(3) * m1)) + ((x2(3) * v2(1) * m2) - (x2(1) * v2(3) * m2))) & - ! / mergeadd_list%mass(nmergeadd) - !vx_frag = ((1.0_DP / frags_added) * (b / z_frag)) - vbs(1) - !vy_frag = ((1.0_DP / frags_added) * (-a / z_frag)) - vbs(2) - !vz_frag = vz_com - vbs(3) - - mergeadd_list%xh(1,nstart + i) = x_frag - mergeadd_list%xh(2,nstart + i) = y_frag - mergeadd_list%xh(3,nstart + i) = z_frag - mergeadd_list%vh(1,nstart + i) = vx_frag - mergeadd_list%vh(2,nstart + i) = vy_frag - mergeadd_list%vh(3,nstart + i) = vz_frag - - ! tracking linear momentum. - mv = mv + (mergeadd_list%mass(nstart + i) * mergeadd_list%vh(:,nstart + i)) - end do - - write(*, *) "number of fragments added: ", frags_added - ! calculate energy after frag - vnew(:) = mv / mtot ! com of new fragments - enew = 0.5_DP*mtot*dot_product(vnew(:), vnew(:)) - eoffset = eoffset + eold - enew - - ! update fragmax to account for new fragments - fragmax = fragmax + frags_added - write(*,*) "leaving casedisruption" - return - end procedure symba_casedisruption -end submodule s_symba_casedisruption diff --git a/src/symba/symba_casehitandrun.f90 b/src/symba/symba_casehitandrun.f90 deleted file mode 100644 index 201195181..000000000 --- a/src/symba/symba_casehitandrun.f90 +++ /dev/null @@ -1,271 +0,0 @@ -submodule (util) s_symba_casehitandrun -contains - module procedure symba_casehitandrun - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Hit-and-run collision - use swiftest -implicit none - integer(I4B) :: nfrag, i, k, index1, index2, frags_added - integer(I4B) :: index1_parent, index2_parent, index_keep_parent, index_rm_parent - integer(I4B) :: name1, name2, index_keep, index_rm, name_keep, name_rm, nstart - real(DP) :: mtot, msun, d_rm, m_rm, r_rm, x_rm, y_rm, z_rm, vx_rm, vy_rm, vz_rm - real(DP) :: rhill_keep, r_circle, theta, radius1, radius2, e, q, semimajor_encounter - real(DP) :: m_rem, m_test, mass1, mass2, enew, eold, semimajor_inward, a, b, v_col - real(DP) :: x_com, y_com, z_com, vx_com, vy_com, vz_com, mass_keep, mass_rm, rhill_rm - real(DP) :: x_frag, y_frag, z_frag, vx_frag, vy_frag, vz_frag, rad_keep, rad_rm - real(DP) :: r_smallestcircle - real(DP), dimension(NDIM) :: vnew, xr, mv, xh_keep, xh_rm, vh_keep, vh_rm, l, kk, p - - !temporary - interface - function cross_product_hitandrun(ar1,ar2) result(ans) - use swiftest - implicit none - real(DP),dimension(3),intent(in) :: ar1,ar2 - real(DP),dimension(3) :: ans - end function cross_product_hitandrun - end interface - -! executable code - - write(*,*) "entering casehitandrun" - - ! set the maximum number of fragments to be added in a hit and run collision (nfrag) - nfrag = 4 - ! pull in the information about the two particles involved in the collision - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - index1_parent = symba_plA%index_parent(index1) - index2_parent = symba_plA%index_parent(index2) - name1 = symba_plA%name(index1) - name2 = symba_plA%name(index2) - mass1 = symba_plA%mass(index1) ! the mass of the first particle in the collision not including all it's children - mass2 = symba_plA%mass(index2) - radius1 = symba_plA%radius(index1) - radius2 = symba_plA%radius(index2) - msun = symba_plA%mass(1) - - ! determine which of the two particles in the collision is larger where mass includes the mass of all their children - if (m2 > m1) then - index_keep = index2 - index_rm = index1 - mass_keep = m2 - mass_rm = m1 - rad_keep = rad2 - rad_rm = rad1 - xh_keep = x2 - xh_rm = x1 - vh_keep = v2 - vh_rm = v1 - index_keep_parent = index2_parent - index_rm_parent = index1_parent - name_keep = name2 - name_rm = name1 - else - index_keep = index1 - index_rm = index2 - mass_keep = m1 - mass_rm = m2 - rad_keep = rad1 - rad_rm = rad2 - xh_keep = x1 - xh_rm = x2 - vh_keep = v1 - vh_rm = v2 - index_keep_parent = index1_parent - index_rm_parent = index2_parent - name_keep = name1 - name_rm = name2 - end if - - ! find com - x_com = ((x1(1) * m1) + (x2(1) * m2)) / (m1 + m2) - y_com = ((x1(2) * m1) + (x2(2) * m2)) / (m1 + m2) - z_com = ((x1(3) * m1) + (x2(3) * m2)) / (m1 + m2) - - vx_com = ((v1(1) * m1) + (v2(1) * m2)) / (m1 + m2) - vy_com = ((v1(2) * m1) + (v2(2) * m2)) / (m1 + m2) - vz_com = ((v1(3) * m1) + (v2(3) * m2)) / (m1 + m2) - - ! find collision velocity - v_col = norm2(v2(:) - v1(:)) - - ! find energy pre-frag - eold = 0.5_DP*(m1*dot_product(v1(:), v1(:)) + m2*dot_product(v2(:), v2(:))) - xr(:) = x2(:) - x1(:) - eold = eold - (m1*m2/(norm2(xr(:), xr(:))))) - - write(*, *) "hit and run between particles ", name1, " and ", name2, " at time t = ",t - write(*, *) "particle ", name_keep, " survives; particle ", name_rm, " is fragmented." - - ! add both particles involved in the collision to mergesub_list - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name1 - mergesub_list%status(nmergesub) = HIT_AND_RUN - mergesub_list%xh(:,nmergesub) = x1(:) - mergesub_list%vh(:,nmergesub) = v1(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass1 - mergesub_list%radius(nmergesub) = rad1 - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name2 - mergesub_list%status(nmergesub) = HIT_AND_RUN - mergesub_list%xh(:,nmergesub) = x2(:) - mergesub_list%vh(:,nmergesub) = v2(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass2 - mergesub_list%radius(nmergesub) = rad2 - - ! go through the encounter list and look for particles actively encoutering in this timestep - ! prevent them from having further encounters in this timestep by setting status in plplenc_list to merged - do k = 1, nplplenc - if ((plplenc_list%status(k) == ACTIVE) .and. & - ((index1 == plplenc_list%index1(k) .or. index2 == plplenc_list%index2(k)) .or. & - (index2 == plplenc_list%index1(k) .or. index1 == plplenc_list%index2(k)))) then - plplenc_list%status(k) = MERGED - end if - end do - - ! set the status of the particles in symba_plA to hit_and_run - symba_plA%status(index1) = HIT_AND_RUN - symba_plA%status(index2) = HIT_AND_RUN - - l(:) = (v2(:) - v1(:)) / norm2(v2(:)-v1(:)) - p(:) = cross_product_hitandrun(xr(:) / norm2(xr(:)), l(:)) - kk(:) = cross_product_hitandrun(l(:),p(:)) - - mtot = 0.0_DP ! running total mass of new fragments - mv = 0.0_DP ! running sum of m*v of new fragments to be used in com calculation - frags_added = 0 ! running total number of new fragments - nstart = nmergeadd + 1 ! start of new fragments in mergeadd_list - ! increment around the circle for positions of fragments - ! calculate the positions of the new fragments in a circle of radius rhill_keep - rhill_keep = symba_plA%rhill(index_keep_parent) - rhill_rm = symba_plA%rhill(index_rm_parent) - r_smallestcircle = (rhscale * rhill_rm + rhscale * rhill_keep) / (2.0_DP * sin(pi / 2.0_DP)) - - ! check that no fragments will be added interior of the smallest orbit that the timestep can reliably resolve - semimajor_inward = ((dt * 32.0_DP) ** 2.0_DP) ** (1.0_DP / 3.0_DP) - call orbel_xv2aeq(x1, v1, msun, semimajor_encounter, e, q) - ! if they are going to be added interior to this orbit, give a warning - if (semimajor_inward > (semimajor_encounter - r_smallestcircle)) then - write(*,*) "warning in symba_casehitandrun: timestep is too large to resolve fragments." - end if - - ! the largest fragment = the kept parent particle - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = HIT_AND_RUN - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = symba_plA%name(index_keep) - mergeadd_list%mass(nmergeadd) = mass_keep - mergeadd_list%radius(nmergeadd) = rad_keep - mergeadd_list%xh(:,nmergeadd) = xh_keep - mergeadd_list%vh(:,nmergeadd) = vh_keep - mtot = mtot + mergeadd_list%mass(nmergeadd) - - - ! pure hit & run - if (mres(2) > m2 * 0.9_DP) then - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = HIT_AND_RUN - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - 1 - mergeadd_list%mass(nmergeadd) = mass_rm - mergeadd_list%radius(nmergeadd) = rad_rm - mergeadd_list%xh(:,nmergeadd) = xh_rm(:) - mergeadd_list%vh(:,nmergeadd) = vh_rm(:) - mtot = mtot + mergeadd_list%mass(nmergeadd) - else - do i = 1, nfrag - m_rm = mass_rm - r_rm = rad_rm - !x_rm = xh_rm(1) - !y_rm = xh_rm(2) - !z_rm = xh_rm(3) - !vx_rm = vh_rm(1) - !vy_rm = vh_rm(2) - !vz_rm = vh_rm(3) - d_rm = (3.0_DP * m_rm) / (4.0_DP * pi * (r_rm ** 3.0_DP)) - - m_rem = m_rm - mres(2) - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%status(nmergeadd) = HIT_AND_RUN - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - 1 - mergeadd_list%mass(nmergeadd) = m_rem / (nfrag - 1) - mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * d_rm)) & - ** (1.0_DP / 3.0_DP) - - ! check if these fragments will not be large enough to be resolved and we have only added one fragment - ! previously (aka the slr). this is the perfect hit and run case. - !else if ((i > 2) .and. (mres(2) > m2 * 0.9_DP) .and. frags_added == 1) then - ! if yes, update the mass of the slr to be the mass of the removed particle and give it all the - ! characteristics of the removed particle - - ! mergeadd_list%name(nmergeadd) = symba_plA%name(index_rm) - ! mergeadd_list%mass(nmergeadd) = mass_rm - ! mergeadd_list%radius(nmergeadd) = rad_rm - ! mergeadd_list%xh(:,nmergeadd) = xh_rm - ! mergeadd_list%vh(:,nmergeadd) = vh_rm - ! mtot = mtot - mres(2) + mass_rm - - ! if these fragments will not be large enough to be resolved but we have added more than one fragment - ! previously, add the remaining mass that we need to "make up for" to the mass of the most recent - ! fragment and recalculate the radius. - !else - ! mergeadd_list%mass(nmergeadd) = mergeadd_list%mass(nmergeadd) + m_rem - ! mergeadd_list%radius(nmergeadd) = (((3.0_DP/4.0_DP) * pi) * (mergeadd_list%mass(nmergeadd) / d_rm)) & - ! ** (1.0_DP / 3.0_DP) - !end if - end do - end if - - if (frags_added > 1) then - r_circle = (rhscale * rhill_keep + rhscale * rhill_rm) / (2.0_DP * sin(pi / frags_added)) - theta = (2.0_DP * pi) / (frags_added) - do i=1, frags_added - ! increment around the circle for positions of fragments - x_frag = (r_circle * cos(theta * i))*l(1) + (r_circle * sin(theta * i))*p(1) + x_com - y_frag = (r_circle * cos(theta * i))*l(2) + (r_circle * sin(theta * i))*p(2) + y_com - z_frag = (r_circle * cos(theta * i))*l(3) + (r_circle * sin(theta * i))*p(3) + z_com - - !vx_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m2 * v2(1)))) !- vbs(1) - !vy_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m2 * v2(2)))) !- vbs(2) - !vz_frag = ((1.0_DP / frags_added) * (1.0_DP / mergeadd_list%mass(nstart + i)) * ((m2 * v2(3)))) !- vbs(3) - - a = v_col * m2 * (1.0_DP / mergeadd_list%mass(nstart + i)) - - vx_frag = ((a * cos(theta * i))*l(1)) + ((a * sin(theta * i))*p(1)) + vh_rm(1) !+ vx_com - vy_frag = ((a * cos(theta * i))*l(2)) + ((a * sin(theta * i))*p(2)) + vh_rm(2) !+ vy_com - vz_frag = ((a * cos(theta * i))*l(3)) + ((a * sin(theta * i))*p(3)) + vh_rm(3) !+ vz_com - - ! conservation of angular momentum for velocities of fragments - !a = ((y_rm * vz_rm * m_rm) - (z_rm * vy_rm * m_rm)) / mergeadd_list%mass(nmergeadd) - !b = ((z_rm * vx_rm * m_rm) - (x_rm * vz_rm * m_rm)) / mergeadd_list%mass(nmergeadd) - !vx_frag = ((1.0_DP / frags_added) * (b / z_frag)) - vbs(1) - !vy_frag = ((1.0_DP / frags_added) * (-a / z_frag)) - vbs(2) - !vz_frag = vz_com - vbs(3) - - mergeadd_list%xh(1,nstart + i) = x_frag - mergeadd_list%xh(2,nstart + i) = y_frag - mergeadd_list%xh(3,nstart + i) = z_frag - mergeadd_list%vh(1,nstart + i) = vx_frag - mergeadd_list%vh(2,nstart + i) = vy_frag - mergeadd_list%vh(3,nstart + i) = vz_frag - - ! tracking linear momentum. - mv = mv + (mergeadd_list%mass(nmergeadd) * mergeadd_list%vh(:,nmergeadd)) - end do - end if - write(*, *) "number of fragments added: ", (frags_added) - ! calculate energy after frag - vnew(:) = mv / mtot ! com of new fragments - enew = 0.5_DP*mtot*dot_product(vnew(:), vnew(:)) - eoffset = eoffset + eold - enew - ! update fragmax to account for new fragments - fragmax = fragmax + frags_added - write(*,*) "leaving casehitandrun" - return - end procedure symba_casehitandrun -end submodule s_symba_casehitandrun diff --git a/src/symba/symba_casemerge.f90 b/src/symba/symba_casemerge.f90 deleted file mode 100644 index fc45d0964..000000000 --- a/src/symba/symba_casemerge.f90 +++ /dev/null @@ -1,129 +0,0 @@ -submodule (symba) s_symba_casemerge -contains - module procedure symba_casemerge - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Merge planetss - !! Adapted from David E. Kaufmann's Swifter routine: symba_merge_pl .f90 - !! Adapted from Hal Levison's Swift routine symba5_merge.f -use swiftest -implicit none - - integer(I4B) :: i, j, k, stat1, stat2, index1, index2, indexchild - integer(I4B) :: index1_child, index2_child, index1_parent, index2_parent - integer(I4B) :: name1, name2 - real(DP) :: mtot - real(DP) :: eold, enew, mass1, mass2 - real(DP), dimension(NDIM) :: xr, xnew, vnew - integer(I4B), dimension(npl) :: array_keep_child, array_rm_child - -! executable code - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - index1_parent = symba_plA%index_parent(index1) - index2_parent = symba_plA%index_parent(index2) - mtot = m1 + m2 - xnew(:) = (m1*x1(:) + m2*x2(:))/mtot - vnew(:) = (m1*v1(:) + m2*v2(:))/mtot - name1 = symba_plA%name(index1) - name2 = symba_plA%name(index2) - mass1 = symba_plA%mass(index1) - mass2 = symba_plA%mass(index2) - stat1 = symba_plA%status(index1) - stat2 = symba_plA%status(index2) - write(*, *) "merging particles ", name1, " and ", name2, " at time t = ",t - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name1 - mergesub_list%status(nmergesub) = MERGED - mergesub_list%xh(:,nmergesub) = x1(:) - mergesub_list%vh(:,nmergesub) = v1(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass1 - mergesub_list%radius(nmergesub) = rad1 - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name2 - mergesub_list%status(nmergesub) = MERGED - mergesub_list%xh(:,nmergesub) = x2(:) - mergesub_list%vh(:,nmergesub) = v2(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass2 - mergesub_list%radius(nmergesub) = rad2 - nmergeadd = nmergeadd + 1 - if (m2 > m1) then - mergeadd_list%name(nmergeadd) = name2 - mergeadd_list%status(nmergeadd) = stat2 - - else - mergeadd_list%name(nmergeadd) = name1 - mergeadd_list%status(nmergeadd) = stat1 - - end if - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%xh(:,nmergeadd) = xnew(:) - mergeadd_list%vh(:,nmergeadd) = vnew(:) - vbs(:) - eold = 0.5_DP*(m1*dot_product(v1(:), v1(:)) + m2*dot_product(v2(:), v2(:))) - xr(:) = x2(:) - x1(:) - eold = eold - m1*m2/norm2(xr(:), xr(:))) - enew = 0.5_DP*mtot*dot_product(vnew(:), vnew(:)) - eoffset = eoffset + eold - enew - - do k = 1, nplplenc - if (plplenc_list%status(k) == ACTIVE) then - do i = 0, symba_plA%nchild(index1_parent) - if (i == 0) then - index1_child = index1_parent - else - index1_child = array_index1_child(i) - end if - do j = 0, symba_plA%nchild(index2_parent) - if (j == 0) then - index2_child = index2_parent - else - index2_child = array_index2_child(j) - end if - if ((index1_child == plplenc_list%index1(k)) .and. (index2_child == plplenc_list%index2(k))) then - plplenc_list%status(k) = MERGED - else if ((index1_child == plplenc_list%index2(k)) .and. & - (index2_child == plplenc_list%index1(k))) then - plplenc_list%status(k) = MERGED - end if - end do - end do - end if - end do - - symba_plA%xh(:,index1_parent) = xnew(:) - symba_plA%vb(:,index1_parent) = vnew(:) - symba_plA%xh(:,index2_parent) = xnew(:) - symba_plA%vb(:,index2_parent) = vnew(:) - - ! the children of parent one are the children we are keeping - array_keep_child(1:npl) = symba_plA%index_child(1:npl,index1_parent) - ! go through the children of the kept parent and add those children to the array of kept children - do i = 1, symba_plA%nchild(index1_parent) - indexchild = array_keep_child(i) - symba_plA%xh(:,indexchild) = xnew(:) - symba_plA%vb(:,indexchild) = vnew(:) - end do - ! the removed parent is assigned as a new child to the list of children of the kept parent - ! gives kept parent a new child - symba_plA%index_child((symba_plA%nchild(index1_parent)+1),index1_parent) = index2_parent - array_rm_child(1:npl) = symba_plA%index_child(1:npl,index2_parent) - ! the parent of the removed parent is assigned to be the kept parent - ! gives removed parent a new parent - symba_plA%index_parent(index2) = index1_parent - ! go through the children of the removed parent and add those children to the array of removed children - do i = 1, symba_plA%nchild(index2_parent) - symba_plA%index_parent(array_rm_child(i)) = index1_parent - indexchild = array_rm_child(i) - symba_plA%xh(:,indexchild) = xnew(:) - symba_plA%vb(:,indexchild) = vnew(:) - end do - ! go through the children of the removed parent and add those children to the list of children of the kept parent - do i = 1, symba_plA%nchild(index2_parent) - symba_plA%index_child(symba_plA%nchild(index1_parent)+i+1,index1_parent)= array_rm_child(i) - end do - ! updates the number of children of the kept parent - symba_plA%nchild(index1_parent) = symba_plA%nchild(index1_parent) + symba_plA%nchild(index2_parent) + 1 - - return - end procedure symba_casemerge -end submodule s_symba_casemerge diff --git a/src/symba/symba_caseresolve.f90 b/src/symba/symba_caseresolve.f90 deleted file mode 100644 index cbee34081..000000000 --- a/src/symba/symba_caseresolve.f90 +++ /dev/null @@ -1,46 +0,0 @@ -submodule (symba) s_symba_caseresolve -contains - module procedure symba_caseresolve - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Resolve which of the collision regimes to apply -use swiftest -implicit none - -! executable code - - select case (regime) - - case (COLLRESOLVE_REGIME_DISRUPTION) - call symba_casedisruption (t, dt, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, eoffset, vbs, & - symba_plA, nplplenc, plplenc_list, param%nplmax, param%ntpmax, fragmax, mres, rres, m1, m2, rad1, rad2, x1, x2, v1, v2) - - case (COLLRESOLVE_REGIME_SUPERCATASTROPHIC) - call symba_casesupercatastrophic (t, dt, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, & - eoffset, vbs, symba_plA, nplplenc, & - plplenc_list, param%nplmax, param%ntpmax, fragmax, mres, rres, m1, m2, rad1, & - rad2, x1, x2, v1, v2) - - case (COLLRESOLVE_REGIME_GRAZE_AND_MERGE) - call symba_casemerge (t, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, eoffset, vbs, & - npl, symba_plA, nplplenc, plplenc_list, array_index1_child, array_index2_child, m1, m2, rad1, rad2, x1, & - x2, v1, v2) - - case (COLLRESOLVE_REGIME_HIT_AND_RUN) - call symba_casehitandrun (t, dt, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, eoffset, vbs, & - symba_plA, nplplenc, plplenc_list, & - param%nplmax, param%ntpmax, fragmax, mres, rres, m1, m2, rad1, rad2, x1, x2, v1, v2) - - case (COLLRESOLVE_REGIME_MERGE) - call symba_casemerge (t, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, eoffset, vbs, & - npl, symba_plA, nplplenc, plplenc_list, array_index1_child, array_index2_child, m1, m2, rad1, rad2, x1, & - x2, v1, v2) - - case default - write(*,*) "Error in symba_caseresolve, no regime selected" - end select - - -return - end procedure symba_caseresolve -end submodule s_symba_caseresolve diff --git a/src/symba/symba_casesupercatastrophic.f90 b/src/symba/symba_casesupercatastrophic.f90 deleted file mode 100644 index 04aa1bfa7..000000000 --- a/src/symba/symba_casesupercatastrophic.f90 +++ /dev/null @@ -1,253 +0,0 @@ -submodule (symba) s_symba_casesupercatastrophic -contains - module procedure symba_casesupercatastrophic - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Supercatastrophic disruption event - use swiftest -implicit none - integer(I4B) :: nfrag, i, k, index1, index2, frags_added - integer(I4B) :: index1_parent, index2_parent - integer(I4B) :: name1, name2, nstart - real(DP) :: mtot, msun, avg_d, d_p1, d_p2, semimajor_encounter, e, q, semimajor_inward - real(DP) :: rhill_p1, rhill_p2, r_circle, theta, radius1, radius2, r_smallestcircle - real(DP) :: m_rem, m_test, mass1, mass2, enew, eold, a, b, v_col - real(DP) :: x_com, y_com, z_com, vx_com, vy_com, vz_com - real(DP) :: x_frag, y_frag, z_frag, vx_frag, vy_frag, vz_frag, m1m2_10 - real(DP), dimension(NDIM) :: vnew, xr, mv, l, kk, p - - !temporary - interface - function cross_product_supercatastrophic(ar1,ar2) result(ans) - use swiftest - implicit none - real(DP),dimension(3),intent(in) :: ar1,ar2 - real(DP),dimension(3) :: ans - end function cross_product_supercatastrophic - end interface - -! executable code - - write(*,*) "entering casesupercatastrophic" - ! set the maximum number of fragments to be added in a supercatastrophic disruption collision (nfrag) - nfrag = 10 - ! pull in the information about the two particles involved in the collision - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - index1_parent = symba_plA%index_parent(index1) - index2_parent = symba_plA%index_parent(index2) - name1 = symba_plA%name(index1) - name2 = symba_plA%name(index2) - mass1 = symba_plA%mass(index1) ! the mass of the first particle in the collision not including all it's children - mass2 = symba_plA%mass(index2) - radius1 = symba_plA%radius(index1) - radius2 = symba_plA%radius(index2) - msun = symba_plA%mass(1) - - ! find com - x_com = ((x1(1) * m1) + (x2(1) * m2)) / (m1 + m2) - y_com = ((x1(2) * m1) + (x2(2) * m2)) / (m1 + m2) - z_com = ((x1(3) * m1) + (x2(3) * m2)) / (m1 + m2) - - vx_com = ((v1(1) * m1) + (v2(1) * m2)) / (m1 + m2) - vy_com = ((v1(2) * m1) + (v2(2) * m2)) / (m1 + m2) - vz_com = ((v1(3) * m1) + (v2(3) * m2)) / (m1 + m2) - - ! find collision velocity - v_col = norm2(v2(:) - v1(:)) - - ! find energy pre-frag - eold = 0.5_DP*(m1*dot_product(v1(:), v1(:)) + m2*dot_product(v2(:), v2(:))) - xr(:) = x2(:) - x1(:) - eold = eold - (m1*m2/(norm2(xr(:), xr(:))))) - - write(*, *) "supercatastrophic disruption between particles ", name1, " and ", name2, " at time t = ",t - - ! add both particles involved in the collision to mergesub_list - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name1 - mergesub_list%status(nmergesub) = SUPERCATASTROPHIC - mergesub_list%xh(:,nmergesub) = x1(:) - mergesub_list%vh(:,nmergesub) = v1(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass1 - mergesub_list%radius(nmergesub) = radius1 - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name2 - mergesub_list%status(nmergesub) = SUPERCATASTROPHIC - mergesub_list%xh(:,nmergesub) = x2(:) - mergesub_list%vh(:,nmergesub) = v2(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass2 - mergesub_list%radius(nmergesub) = radius2 - - ! go through the encounter list and look for particles actively encoutering in this timestep - ! prevent them from having further encounters in this timestep by setting status in plplenc_list to merged - do k = 1, nplplenc - if ((plplenc_list%status(k) == ACTIVE) .and. & - ((index1 == plplenc_list%index1(k) .or. index2 == plplenc_list%index2(k)) .or. & - (index2 == plplenc_list%index1(k) .or. index1 == plplenc_list%index2(k)))) then - plplenc_list%status(k) = MERGED - end if - end do - - ! set the status of the particles in symba_plA to disruption - symba_plA%status(index1) = SUPERCATASTROPHIC - symba_plA%status(index2) = SUPERCATASTROPHIC - - l(:) = (v2(:) - v1(:)) / norm2(v2(:)-v1(:)) - p(:) = cross_product_supercatastrophic(xr(:) / norm2(xr(:)), l(:)) - kk(:) = cross_product_supercatastrophic(l(:),p(:)) - - ! calculate the positions of the new fragments in a circle with a radius large enough to space - ! all fragments apart by a distance of rhill_p1 + rhill_p2 - rhill_p1 = symba_plA%rhill(index1_parent) - rhill_p2 = symba_plA%rhill(index2_parent) - r_smallestcircle = (rhscale * rhill_p1 + rhscale * rhill_p2) / (2.0_DP * sin(pi /2.0_DP)) - - ! check that no fragments will be added interior of the smallest orbit that the timestep can reliably resolve - semimajor_inward = ((dt * 32.0_DP) ** 2.0_DP) ** (1.0_DP / 3.0_DP) - call orbel_xv2aeq(x1, v1, msun, semimajor_encounter, e, q) - ! if they are going to be added interior to this orbit, give a warning - if (semimajor_inward > (semimajor_encounter - r_smallestcircle)) then - write(*,*) "warning in symba_casesupercatastrophic: timestep is too large to resolve fragments." - end if - ! if not, continue through all possible fragments to be added - mtot = 0.0_DP ! running total mass of new fragments - mv = 0.0_DP ! running sum of m*v of new fragments to be used in com calculation - frags_added = 0 ! running total number of new fragments - m1m2_10 = 0.1_DP * (m1 + m2) ! one tenth the total initial mass of the system used to check the size of the fragments - nstart = nmergeadd - - d_p1 = (3.0_DP * m1) / (4.0_DP * pi * (rad1 ** 3.0_DP)) - d_p2 = (3.0_DP * m2) / (4.0_DP * pi * (rad2 ** 3.0_DP)) - avg_d = ((m1 * d_p1) + (m2 * d_p2)) / (m1 + m2) - - ! if we are adding the first and largest fragment (lr), check to see if its mass is smaller than one tenth the total - ! mass of the system aka if it is too small to resolve. if so, add a fragment with a mass of one tenth the total mass - ! of the system and calculate its radius. - if ((mres(1) < m1m2_10)) then - do i = 1, nfrag - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%status(nmergeadd) = SUPERCATASTROPHIC - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%mass(nmergeadd) = m1m2_10 - mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ** (1.0_DP / 3.0_DP) - mtot = mtot + mergeadd_list%mass(nmergeadd) - end do - end if - ! if we are adding the first and largest fragment (lr), check to see if its mass is larger than one tenth the total - ! mass of the system aka if it is large enough to resolve. if so, its mass and radius should be taken from - ! util_regime. - if ((mres(1) > m1m2_10)) then - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%status(nmergeadd) = SUPERCATASTROPHIC - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%mass(nmergeadd) = mres(1) - mergeadd_list%radius(nmergeadd) = rres(1) - mtot = mtot + mergeadd_list%mass(nmergeadd) - do i = 2, nfrag - frags_added = frags_added + 1 - nmergeadd = nmergeadd + 1 - mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - mergeadd_list%status(nmergeadd) = SUPERCATASTROPHIC - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%mass(nmergeadd) = (m1 + m2 - mres(1)) / (nfrag - 1.0_DP) - mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ** (1.0_DP / 3.0_DP) - mtot = mtot + mergeadd_list%mass(nmergeadd) - end do - end if - - - !end if - ! if we are adding more than one fragment - !if ((i > 1) .and. (mres(1) > m1m2_10)) then - ! m_rem is the mass needed to be "made up for" in fragments, mres(1) is the mass of the largest fragments - ! that has already been added, and m1 and m2 are the masses of the original particles involved in the collision. - ! m_rem = (m1 + m2) - (mergeadd_list%mass(nmergeadd)) - ! check if these fragments will be large enough to be resolved - ! if (m_rem > (1.0_DP / 10.0_DP)*mres(1))) then - - ! if yes, add a fragment using durda et al 2007 figure 2 supercatastrophic: n = (1.5e5)e(-1.3*d) for the mass - ! frags_added = frags_added + 1 - ! nmergeadd = nmergeadd + 1 - ! mergeadd_list%name(nmergeadd) = param%nplmax + param%ntpmax + fragmax + i - ! mergeadd_list%status(nmergeadd) = SUPERCATASTROPHIC - ! mergeadd_list%ncomp(nmergeadd) = 2 - ! mergeadd_list%mass(nmergeadd) = m_rem / (nfrag - 1) - - ! create a "test mass" using durda et al 2007 figure 2 supercatastrophic: n = (1.5e5)e(-1.3*d) - !m_test = (((- 1.0_DP / 2.6_DP) * log(i / (1.5_DP * 10.0_DP ** 5))) ** 3.0_DP) * ((4.0_DP / 3.0_DP) & - ! * pi * avg_d) - ! if the test mass is smaller than the mass that needs to be "made up for", add it. - !if (m_test < m_rem) then - ! mergeadd_list%mass(nmergeadd) = m_test - ! if not, aka if the test mass is too large, then add a fragment with a mass equal to the difference between - ! the sum of the mass of the parents and the total mass already added. - !else - ! mergeadd_list%mass(nmergeadd) = (m1 + m2) - mtot - !end if - - ! calculate the radius of the fragments using the weighted average density of the parents. - ! mergeadd_list%radius(nmergeadd) = ((3.0_DP * mergeadd_list%mass(nmergeadd)) / (4.0_DP * pi * avg_d)) & - ! ** (1.0_DP / 3.0_DP) - ! mtot = mtot + mergeadd_list%mass(nmergeadd) - ! else - ! mergeadd_list%mass(nmergeadd) = mergeadd_list%mass(nmergeadd) + m_rem - ! mergeadd_list%radius(nmergeadd) = (((3.0_DP/4.0_DP) * pi) * (mergeadd_list%mass(nmergeadd) / avg_d)) & - ! ** (1.0_DP / 3.0_DP) - ! end if - !end if - - r_circle = (rhscale * rhill_p1 + rhscale * rhill_p2) / (2.0_DP * sin(pi / frags_added)) - theta = (2.0_DP * pi) / frags_added - - do i=1, frags_added - - ! increment around the circle for positions of fragments - x_frag = (r_circle * cos(theta * i))*l(1) + (r_circle * sin(theta * i))*p(1) + x_com - y_frag = (r_circle * cos(theta * i))*l(2) + (r_circle * sin(theta * i))*p(2) + y_com - z_frag = (r_circle * cos(theta * i))*l(3) + (r_circle * sin(theta * i))*p(3) + z_com - - a = v_col * (m1 + m2) * (1.0_DP / mergeadd_list%mass(nstart + i)) - - vx_frag = ((a * cos(theta * i))*l(1)) + ((a * sin(theta * i))*p(1)) + vx_com - vy_frag = ((a * cos(theta * i))*l(2)) + ((a * sin(theta * i))*p(2)) + vy_com - vz_frag = ((a * cos(theta * i))*l(3)) + ((a * sin(theta * i))*p(3)) + vz_com - - !conservation of angular momentum for velocities of fragments - !a = (((x1(2) * v1(3) * m1) - (x1(3) * v1(2) * m1)) + ((x2(2) * v2(3) * m2) - (x2(3) * v2(2) * m2))) & - ! / mergeadd_list%mass(nmergeadd) - !b = (((x1(3) * v1(1) * m1) - (x1(1) * v1(3) * m1)) + ((x2(3) * v2(1) * m2) - (x2(1) * v2(3) * m2))) & - ! / mergeadd_list%mass(nmergeadd) - !vx_frag = ((1.0_DP / frags_added) * (b / z_frag)) - vbs(1) - !vy_frag = ((1.0_DP / frags_added) * (-a / z_frag)) - vbs(2) - !vz_frag = vz_com - vbs(3) - - mergeadd_list%xh(1,nstart + i) = x_frag - mergeadd_list%xh(2,nstart + i) = y_frag - mergeadd_list%xh(3,nstart + i) = z_frag - mergeadd_list%vh(1,nstart + i) = vx_frag - mergeadd_list%vh(2,nstart + i) = vy_frag - mergeadd_list%vh(3,nstart + i) = vz_frag - ! tracking linear momentum. - mv = mv + (mergeadd_list%mass(nstart + i) * mergeadd_list%vh(:,nstart + i)) - end do - - write(*, *) "number of fragments added: ", frags_added - ! calculate energy after frag - vnew(:) = mv / mtot ! com of new fragments - enew = 0.5_DP*mtot*dot_product(vnew(:), vnew(:)) - eoffset = eoffset + eold - enew - - ! update fragmax to account for new fragments - fragmax = fragmax + frags_added - write(*,*) "leaving casesupercatastrophic" - - return - end procedure symba_casesupercatastrophic -end submodule s_symba_casesupercatastrophic diff --git a/src/symba/symba_chk.f90 b/src/symba/symba_chk.f90 deleted file mode 100644 index 08f222a07..000000000 --- a/src/symba/symba_chk.f90 +++ /dev/null @@ -1,26 +0,0 @@ -submodule (symba) s_symba_chk -contains - module procedure symba_chk - !! author: David A. Minton - !! - !! Check for an encounter - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_chk.f90 - !! Adapted from Hal Levison's Swift routine symba5_chk.f -use swiftest -implicit none - integer(I4B) :: iflag - real(DP) :: rcrit, r2crit, vdotr - - lencounter = .false. - rcrit = (rhill1 + rhill2)*rhscale*(rshell**(irec)) - r2crit = rcrit*rcrit - call rmvs_chk_ind(xr(:), vr(:), dt, r2crit, iflag) - if (iflag /= 0) lencounter = .true. - vdotr = dot_product(vr(:), xr(:)) - lvdotr = (vdotr < 0.0_DP) - - return - - end procedure symba_chk -end submodule s_symba_chk diff --git a/src/symba/symba_chk_eucl.f90 b/src/symba/symba_chk_eucl.f90 deleted file mode 100644 index b8e2d1e85..000000000 --- a/src/symba/symba_chk_eucl.f90 +++ /dev/null @@ -1,73 +0,0 @@ -submodule (symba) s_symba_chk_eucl -contains - module procedure symba_chk_eucl - !! author: Jacob R. Elliott - !! - !! Check for an encounter, but use the single-loop blocking to evaluate the Euclidean distance matrix - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_chk.f90 - !! Adapted from Hal Levison's Swift routine symba5_chk.f -use swiftest -implicit none - ! logical :: iflag lvdotr_flag - real(DP) :: rcrit, r2crit, vdotr, r2, v2, tmin, r2min, term2, rcritmax, r2critmax - integer(I4B) :: k - real(DP), dimension(NDIM):: xr, vr - -! executable code - - nplplenc = 0 - - term2 = rhscale*rshell**0 - - rcritmax = (symba_plA%rhill(2) + symba_plA%rhill(3)) * term2 - r2critmax = rcritmax * rcritmax - -!$omp parallel do default(none) schedule(static) & -!$omp num_threads(min(omp_get_max_threads(),ceiling(num_encounters/10000.))) & -!$omp private(k, rcrit, r2crit, r2, vdotr, v2, tmin, r2min, xr, vr) & -!$omp shared(num_encounters, lvdotr, lencounter, k_plpl, dt, term2, r2critmax, symba_plA) & -!$omp reduction(+:nplplenc) - - do k = 1,num_encounters - xr(:) = symba_plA%xh(:,k_plpl(2,k)) - symba_plA%xh(:,k_plpl(1,k)) - - r2 = dot_product(xr(:), xr(:)) - if (r2 mmax) then - mmax = m - indexk = indexchild - end if - end do - x(:) = x(:)/mtot - v(:) = v(:)/mtot - r = r3**(1.0_DP/3.0_DP) - symba_plA%mass(indexk) = mtot - symba_plA%radius(indexk) = r - symba_plA%xh(:,indexk) = x(:) - symba_plA%vb(:,indexk) = v(:) - symba_plA%vh(:,indexk) = v(:) - vbs(:) - mu = msun*mtot/(msun + mtot) - r = norm2(x(:)) - v(:) = symba_plA%vh(:,indexk) - v2 = dot_product(v(:), v(:)) - energy = -1.0_DP*msun*mtot/r + 0.5_DP*mu*v2 - ap = -1.0_DP*msun*mtot/(2.0_DP*energy) - symba_plA%rhill(indexk) = ap*(((mu/msun)/3.0_DP)**(1.0_DP/3.0_DP)) - array_child(1:npl) = symba_plA%index_child(1:npl,enc_big) - indexchild = enc_big - ldiscard = .true. - do j = 0, nchild - if (indexchild /= indexk) then - symba_plA%status(indexchild) = MERGED - end if - indexchild = array_child(j+1) - end do - - else if ((symba_plA%status(index1) == DISRUPTION) .and. & - (symba_plA%status(index2) == DISRUPTION)) then - - enc_big = plplenc_list%index1(i) - nchild = symba_plA%nchild(enc_big) - array_child(1:npl) = symba_plA%index_child(1:npl,enc_big) - do j = 1, nchild - symba_plA%status(array_child(j)) = INACTIVE - end do - ldiscard = .true. - else if ((symba_plA%status(index1) == SUPERCATASTROPHIC) .and. & - (symba_plA%status(index2) == SUPERCATASTROPHIC)) then - - enc_big = plplenc_list%index1(i) - nchild = symba_plA%nchild(enc_big) - array_child(1:npl) = symba_plA%index_child(1:npl,enc_big) - do j = 1, nchild - symba_plA%status(array_child(j)) = INACTIVE - end do - ldiscard = .true. - else if ((symba_plA%status(index1) == HIT_AND_RUN) .and. & - (symba_plA%status(index2) == HIT_AND_RUN)) then - - enc_big = plplenc_list%index1(i) - nchild = symba_plA%nchild(enc_big) - array_child(1:npl) = symba_plA%index_child(1:npl,enc_big) - do j = 1, nchild - symba_plA%status(array_child(j)) = INACTIVE - end do - ldiscard = .true. - else if ((symba_plA%status(index1) == GRAZE_AND_MERGE) .and. & - (symba_plA%status(index2) == GRAZE_AND_MERGE)) then - - enc_big = plplenc_list%index1(i) - nchild = symba_plA%nchild(enc_big) - array_child(1:npl) = symba_plA%index_child(1:npl,enc_big) - do j = 1, nchild - symba_plA%status(array_child(j)) = INACTIVE - end do - ldiscard = .true. - end if - end if - end do - - return - - end procedure symba_discard_merge_pl -end submodule s_symba_discard_merge_pl diff --git a/src/symba/symba_discard_peri_pl.f90 b/src/symba/symba_discard_peri_pl.f90 deleted file mode 100644 index a78b6e57d..000000000 --- a/src/symba/symba_discard_peri_pl.f90 +++ /dev/null @@ -1,42 +0,0 @@ -submodule (symba) s_symba_discard_peri_pl -contains - module procedure symba_discard_peri_pl - !! author: David A. Minton - !! - !! Check to see if planets should be discarded based on their pericenter distances - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_discard_peri_pl.f90 - !! Adapted from Hal Levison's Swift routine discard_mass_peri.f -use swiftest -implicit none - logical , save :: lfirst = .true. - integer(I4B) :: i, j, ih - real(DP) :: r2 - real(DP), dimension(NDIM) :: dx - - -! executable code - if (lfirst) then - call symba_peri(lfirst, npl, symba_plA, msys, qmin_coord) - lfirst = .false. - else - call symba_peri(lfirst, npl, symba_plA, msys, qmin_coord) - do i = 2, npl - if (symba_plA%status(i) == ACTIVE) then - if ((symba_plA%isperi(i) == 0) .and. (symba_plA%nplenc(i)== 0)) then - if ((symba_plA%atp(i) >= qmin_alo) .and. (symba_plA%atp(i) <= qmin_ahi) & - .and. (symba_plA%peri(i) <= qmin)) then - ldiscards = .true. - symba_plA%status(i) = DISCARDED_PERI - write(*, *) "particle ", symba_plA%name(i), & - " perihelion distance too small at t = ", t - end if - end if - end if - end do - end if - - return - - end procedure symba_discard_peri_pl -end submodule s_symba_discard_peri_pl diff --git a/src/symba/symba_discard_pl.f90 b/src/symba/symba_discard_pl.f90 deleted file mode 100644 index e5a7803a7..000000000 --- a/src/symba/symba_discard_pl.f90 +++ /dev/null @@ -1,28 +0,0 @@ -submodule (symba) s_symba_discard_pl -contains - module procedure symba_discard_pl - !! author: David A. Minton - !! - !! Check to see if planets should be discarded based on their positions or because they are unbound - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_discard_pl.f90 - !! Adapted from Hal Levison's Swift routine discard_massive5.f -use swiftest -implicit none - logical :: ldiscards - integer(I4B) :: i - real(DP) :: msys, ke, pe, tei, tef - real(DP), dimension(NDIM) :: htot - -! executable code - ldiscards = .false. - if ((rmin >= 0.0_DP) .or. (rmax >= 0.0_DP) .or. (param%rmaxu >= 0.0_DP) .or. ((qmin >= 0.0_DP) .and. (qmin_coord == "bary"))) & - call coord_h2b(npl, symba_plA, msys) - if ((rmin >= 0.0_DP) .or. (rmax >= 0.0_DP) .or. (param%rmaxu >= 0.0_DP)) & - call symba_discard_sun_pl(t, npl, msys, symba_plA, rmin, rmax, param%rmaxu, ldiscards) - if (qmin >= 0.0_DP) call symba_discard_peri_pl(t, npl, symba_plA, msys, qmin, qmin_alo, qmin_ahi, qmin_coord, ldiscards) - - return - - end procedure symba_discard_pl -end submodule s_symba_discard_pl diff --git a/src/symba/symba_discard_sun_pl.f90 b/src/symba/symba_discard_sun_pl.f90 deleted file mode 100644 index a66b2f316..000000000 --- a/src/symba/symba_discard_sun_pl.f90 +++ /dev/null @@ -1,49 +0,0 @@ -submodule (symba) s_symba_discard_sun_pl -contains - module procedure symba_discard_sun_pl - !! author: David A. Minton - !! - !! Check to see if planets should be discarded based on their positions relative to the Sun - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_discard_sun_pl.f90 - !! Adapted from Hal Levison's Swift routine discard_massive5.f -use swiftest -implicit none - integer(I4B) :: i - real(DP) :: energy, vb2, rb2, rh2, rmin2, rmax2, param%rmaxu2 - - -! executable code - rmin2 = rmin*rmin - rmax2 = rmax*rmax - param%rmaxu2 = param%rmaxu*param%rmaxu - do i = 2, npl - if (swiftest_plA%status(i) == ACTIVE) then - rh2 = dot_product(swiftest_plA%xh(:,i), swiftest_plA%xh(:,i)) - if ((rmax >= 0.0_DP) .and. (rh2 > rmax2)) then - ldiscards = .true. - swiftest_plA%status(i) = DISCARDED_RMAX - write(*, *) "particle ", swiftest_plA%name(i), " too far from sun at t = ", t - print *,'rmax: ',rmax - print *,'rh2: ',rh2 - else if ((rmin >= 0.0_DP) .and. (rh2 < rmin2)) then - ldiscards = .true. - swiftest_plA%status(i) = DISCARDED_RMIN - write(*, *) "particle ", swiftest_plA%name(i), " too close to sun at t = ", t - else if (param%rmaxu >= 0.0_DP) then - rb2 = dot_product(swiftest_plA%xb(:,i), swiftest_plA%xb(:,i)) - vb2 = dot_product(swiftest_plA%vb(:,i), swiftest_plA%vb(:,i)) - energy = 0.5_DP*vb2 - msys/sqrt(rb2) - if ((energy > 0.0_DP) .and. (rb2 > param%rmaxu2)) then - ldiscards = .true. - swiftest_plA%status(i) = discarded_param%rmaxu - write(*, *) "particle ", swiftest_plA%name(i), " is unbound and too far from barycenter at t = ", t - end if - end if - end if - end do - - return - - end procedure symba_discard_sun_pl -end submodule s_symba_discard_sun_pl diff --git a/src/symba/symba_discard_tp.f90 b/src/symba/symba_discard_tp.f90 deleted file mode 100644 index 660283b87..000000000 --- a/src/symba/symba_discard_tp.f90 +++ /dev/null @@ -1,21 +0,0 @@ -submodule (symba) s_symba_discard_tp -contains - module procedure symba_discard_tp - !! author: David A. Minton - !! - !! Call discard routine to determine spilled test particles, then remove them from ACTIVE list - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_discard_tp.f90 -use swiftest -implicit none - logical :: lclosel = .false. - integer(I4B) :: i - -! executable code - call discard_tpt, dt, npl, ntp, symba_plA, symba_tpA, rmin, rmax, param%rmaxu, qmin, & - qmin_alo, qmin_ahi, qmin_coord, lclosel, & - lrhill_present) - return - - end procedure symba_discard_tp -end submodule s_symba_discard_tp diff --git a/src/symba/symba_fragmentation.f90 b/src/symba/symba_fragmentation.f90 deleted file mode 100644 index cc351f180..000000000 --- a/src/symba/symba_fragmentation.f90 +++ /dev/null @@ -1,221 +0,0 @@ -submodule (symba) s_symba_fragmentation -contains - module procedure symba_fragmentation - !! author: Jennifer L. L. Pouplin and Carlisle A. Wishard - !! - !! Generate new particles resulting from collisions -use swiftest -implicit none - - integer(I4B) :: model, nres, i, itarg, iproj - real(DP), dimension(3) :: mres, rres - real(DP), dimension(NDIM, 3) :: pres, vres - integer(I4B) :: regime - integer(I4B) :: index1, index2, index1_child, index2_child, index1_parent, index2_parent - integer(I4B) :: name1, name2, index_big1, index_big2, stat1, stat2 - real(DP) :: r2, rlim, rlim2, vdotr, tcr2, dt2, a, e, q - real(DP) :: rad1, rad2, m1, m2, den1, den2, vol1, vol2, vchild, dentarg, denproj, dentot, mcenter - real(DP) :: mass1, mass2, mmax, mtmp, mtot, m1_si, m2_si - real(DP), dimension(NDIM) :: xr, vr, x1, v1, x2, v2, x1_si, x2_si, v1_si, v2_si, xproj, xtarg, vproj, vtarg - real(DP) :: den1_si, den2_si, rad1_si, rad2_si, rproj, rtarg - logical :: lfrag_add, lmerge - integer(I4B), dimension(npl) :: array_index1_child, array_index2_child - real(DP) :: mlr, mslr, mtarg, mproj - !real(DP) :: k2 = 2.959122082855911e-4 ! in si units - !real(DP) :: msun = 1.98847e30 ! in si units - !real(DP) :: au = 1.495978707e11 ! in si units - !real(DP) :: year = 3.154e7 ! in si units - - -! executable code - - lmerge = .false. - lfrag_add = .false. - ! model 2 is the model for collresolve_resolve (ls12) - model = 2 - - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - - rlim = symba_plA%radius(index1) + symba_plA%radius(index2) - xr(:) = symba_plA%xh(:,index2) - symba_plA%xh(:,index1) - r2 = dot_product(xr(:), xr(:)) - rlim2 = rlim*rlim - ! checks if bodies are actively colliding in this time step - if (rlim2 >= r2) then - lfrag_add = .true. - ! if they are not actively colliding in this time step, - !checks if they are going to collide next time step based on velocities and q - else - vr(:) = symba_plA%vb(:,index2) - symba_plA%vb(:,index1) - vdotr = dot_product(xr(:), vr(:)) - if (plplenc_list%lvdotr(index_enc) .and. (vdotr > 0.0_DP)) then - tcr2 = r2/dot_product(vr(:), vr(:)) - dt2 = dt*dt - if (tcr2 <= dt2) then - mtot = symba_plA%mass(index1) + symba_plA%mass(index2) - call orbel_xv2aeq(xr(:), vr(:), mtot, a, e, q) - if (q < rlim) lfrag_add = .true. - end if - ! if no collision is going to happen, write as close encounter, not merger - if (.not. lfrag_add) then - if (encounter_file /= "") then - name1 = symba_plA%name(index1) - m1 = symba_plA%mass(index1) - rad1 = symba_plA%radius(index1) - x1(:) = symba_plA%xh(:,index1) - v1(:) = symba_plA%vb(:,index1) - vbs(:) - name2 = symba_plA%name(index2) - m2 = symba_plA%mass(index2) - rad2 = symba_plA%radius(index2) - x2(:) = symba_plA%xh(:,index2) - v2(:) = symba_plA%vb(:,index2) - vbs(:) - - call io_write_encounter(t, name1, name2, m1, m2, rad1, rad2, x1(:), x2(:), & - v1(:), v2(:), encounter_file, out_type) - end if - end if - end if - end if - - nres = 2 - if (lfrag_add) then - symba_plA%lmerged(index1) = .true. - symba_plA%lmerged(index2) = .true. - index1_parent = symba_plA%index_parent(index1) - m1 = symba_plA%mass(index1_parent) - mass1 = m1 - x1(:) = m1*symba_plA%xh(:,index1_parent) - v1(:) = m1*symba_plA%vb(:,index1_parent) - mmax = m1 - name1 = symba_plA%name(index1_parent) - index_big1 = index1_parent - stat1 = symba_plA%status(index1_parent) - array_index1_child(1:npl) = symba_plA%index_child(1:npl,index1_parent) - - vol1 = ((4.0_DP / 3.0_DP) * pi * symba_plA%radius(index1_parent)**3.0_DP) - do i = 1, symba_plA%nchild(index1_parent) ! initialize an array of children - index1_child = array_index1_child(i) - mtmp = symba_plA%mass(index1_child) - vchild = ((4.0_DP / 3.0_DP) * pi * symba_plA%radius(index1_child)**3.0_DP) - vol1 = vol1 + vchild - if (mtmp > mmax) then - mmax = mtmp - name1 = symba_plA%name(index1_child) - index_big1 = index1_child - stat1 = symba_plA%status(index1_child) - end if - m1 = m1 + mtmp - x1(:) = x1(:) + mtmp*symba_plA%xh(:,index1_child) - v1(:) = v1(:) + mtmp*symba_plA%vb(:,index1_child) - end do - den1 = m1 / vol1 - rad1 = ((3.0_DP * m1) / (den1 * 4.0_DP * pi)) ** (1.0_DP / 3.0_DP) - x1(:) = x1(:)/m1 - v1(:) = v1(:)/m1 - - index2_parent = symba_plA%index_parent(index2) - m2 = symba_plA%mass(index2_parent) - mass2 = m2 - rad2 = symba_plA%radius(index2_parent) - x2(:) = m2*symba_plA%xh(:,index2_parent) - v2(:) = m2*symba_plA%vb(:,index2_parent) - mmax = m2 - name2 = symba_plA%name(index2_parent) - index_big2 = index2_parent - stat2 = symba_plA%status(index2_parent) - array_index2_child(1:npl) = symba_plA%index_child(1:npl,index2_parent) - - vol2 = ((4.0_DP / 3.0_DP) * pi * symba_plA%radius(index2_parent)**3.0_DP) - do i = 1, symba_plA%nchild(index2_parent) - index2_child = array_index2_child(i) - mtmp = symba_plA%mass(index2_child) - vchild = ((4.0_DP / 3.0_DP) * pi * symba_plA%radius(index2_child)**3.0_DP) - vol2 = vol2 + vchild - if (mtmp > mmax) then - mmax = mtmp - name2 = symba_plA%name(index2_child) - index_big2 = index2_child - stat2 = symba_plA%status(index2_child) - end if - m2 = m2 + mtmp - x2(:) = x2(:) + mtmp*symba_plA%xh(:,index2_child) - v2(:) = v2(:) + mtmp*symba_plA%vb(:,index2_child) - end do - GU = GC / (DU2M**3 / (MU2KG * TU2S**2)) - den2 = m2 / vol2 - rad2 = ((3.0_DP * m2) / (den2 * 4.0_DP * pi)) ** (1.0_DP / 3.0_DP) - x2(:) = x2(:)/m2 - v2(:) = v2(:)/m2 - - m1_si = (m1 / GU) * MU2KG - m2_si = (m2 / GU) * MU2KG - rad1_si = rad1 * DU2M - rad2_si = rad2 * DU2M - x1_si(:) = x1(:) * DU2M - x2_si(:) = x2(:) * DU2M - v1_si(:) = v1(:) * DU2M / TU2S - v2_si(:) = v2(:) * DU2M / TU2S - den1_si = (den1 / GU) * MU2KG / (DU2M ** 3.0_DP) - den2_si = (den2 / GU) * MU2KG / (DU2M ** 3.0_DP) - - mres(:) = 0.0_DP - rres(:) = 0.0_DP - pres(:,:) = 0.0_DP - vres(:,:) = 0.0_DP - - if (m1_si > m2_si) then - itarg = index1 - iproj = index2 - dentarg = den1_si - denproj = den2_si - mtarg = m1_si - mproj = m2_si - rtarg = rad1_si - rproj = rad2_si - xtarg(:) = x1_si(:) - xproj(:) = x2_si(:) - vtarg(:) = v1_si(:) - vproj(:) = v2_si(:) - else - itarg = index2 - iproj = index1 - dentarg = den2_si - denproj = den1_si - mtarg = m2_si - mproj = m1_si - rtarg = rad2_si - rproj = rad1_si - xtarg(:) = x2_si(:) - xproj(:) = x1_si(:) - vtarg(:) = v2_si(:) - vproj(:) = v1_si(:) - end if - mtot = m1_si + m2_si - dentot = (m1_si *den1_si +m2_si*den2_si )/ mtot - mcenter = symba_plA%mass(1) * MU2KG / GU - - !regime = collresolve_resolve(model,mtarg,mproj,rtarg,rproj,xtarg,xproj, vtarg,vproj, nres, mres, rres, pres, vres) - - call util_regime(mcenter, mtarg, mproj, rtarg, rproj, xtarg, xproj, vtarg, vproj, dentarg, denproj, regime, mlr, mslr) - - mres(1) = mlr - mres(2) = mslr - mres(3) = mtot - mlr - mslr - rres(1) = (3.0_DP * mres(1) / (4.0_DP * pi * dentarg)) *(1.0_DP/3.0_DP) - rres(1) = (3.0_DP * mres(1) / (4.0_DP * pi * dentarg)) ** (1.0_DP/3.0_DP) - rres(2) = (3.0_DP * mres(2) / (4.0_DP * pi * denproj)) ** (1.0_DP/3.0_DP) - rres(3) = (3.0_DP * mres(2) / (4.0_DP * pi * dentot)) ** (1.0_DP/3.0_DP) - - mres(:) = (mres(:) / MU2KG) * GU - rres(:) = rres(:) / DU2M - - call symba_caseresolve(t, dt, index_enc, nmergeadd, nmergesub, mergeadd_list, mergesub_list, eoffset, vbs, & - npl, symba_plA, nplplenc, plplenc_list, regime, fragmax, mres, rres, array_index1_child, & - array_index2_child, m1, m2, rad1, rad2, x1, x2, v1, v2, param) - - end if - return - - end procedure symba_fragmentation -end submodule s_symba_fragmentation diff --git a/src/symba/symba_getacch.f90 b/src/symba/symba_getacch.f90 deleted file mode 100644 index 4056a6216..000000000 --- a/src/symba/symba_getacch.f90 +++ /dev/null @@ -1,91 +0,0 @@ -submodule (symba) s_symba_getacch -contains - module procedure symba_getacch - !! author: David A. Minton - !! - !! Compute heliocentric accelerations of planets - !! Accelerations in an encounter are not included here - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_getacch.f90 - !! Adapted from Hal Levison's Swift routine symba5_getacch.f -use swiftest -implicit none - integer(I4B) :: i, j, index_i, index_j - real(DP) :: rji2, irij3, faci, facj, r2 - real(DP), dimension(NDIM) :: dx - real(DP), dimension(npl) :: irh - real(DP), dimension(npl, NDIM) :: aobl - -! executable code - - do i = 2, npl - symba_plA%ah(:,i) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - - do i = 2, nplm - do j = i + 1, npl - if ((.not. symba_plA%lmerged(i)) .or. (.not. symba_plA%lmerged(j)) .or. & - (symba_plA%index_parent(i) /= symba_plA%index_parent(j))) then - dx(:) = symba_plA%xh(:,j) - symba_plA%xh(:,i) - rji2 = dot_product(dx(:), dx(:)) - irij3 = 1.0_DP/(rji2*sqrt(rji2)) - if (irij3 .ne. irij3 ) then - write(*,*) "dx==0 for pl: ", i, "name:", symba_plA%name(i), & - "and pl:", j, "name:", symba_plA%name(j) - write(*,*) "dx==0 for pl: ", i, "xh:", symba_plA%xh(1,i), & - "and pl:", j, "xh:", symba_plA%xh(1,j) - write(*,*) "parent pl 1:", symba_plA%name(symba_plA%index_parent(i)) - write(*,*) "parent pl 2:", symba_plA%name(symba_plA%index_parent(j)) - stop - end if - faci = symba_plA%mass(i)*irij3 - facj = symba_plA%mass(j)*irij3 - symba_plA%ah(:,i) = symba_plA%ah(:,i) + facj*dx(:) - symba_plA%ah(:,j) = symba_plA%ah(:,j) - faci*dx(:) - end if - end do - end do - - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if ((.not. symba_plA%lmerged(index_i)) .or. (.not. symba_plA%lmerged(index_j)) & - .or. (symba_plA%index_parent(index_i) /= symba_plA%index_parent(index_j))) then !need to update parent/children - dx(:) = symba_plA%xh(:,index_j) - symba_plA%xh(:,index_i) - rji2 = dot_product(dx(:), dx(:)) - irij3 = 1.0_DP/(rji2*sqrt(rji2)) - if (irij3 .ne. irij3 ) then - write(*,*) "dx==0 for pl: ", i, "name:", symba_plA%name(i), & - "and pl:", j, "name:", symba_plA%name(j) - write(*,*) "dx==0 for pl: ", i, "xh:", symba_plA%xh(1,i), & - "and pl:", j, "xh:", symba_plA%xh(1,j) - write(*,*) "parent pl 1:", symba_plA%name(symba_plA%index_parent(i)) - write(*,*) "parent pl 2:", symba_plA%name(symba_plA%index_parent(j)) - stop - end if - faci = symba_plA%mass(index_i)*irij3 - facj = symba_plA%mass(index_j)*irij3 - symba_plA%ah(:,index_i) = symba_plA%ah(:,index_i) - facj*dx(:) - symba_plA%ah(:,index_j) = symba_plA%ah(:,index_j) + faci*dx(:) - end if - end do - if (param%loblatecb) then - !if (lmalloc) then - !allocate(xh(npl, NDIM),aobl(npl, NDIM), irh(npl)) - !lmalloc = .false. - !end if - do i = 2, npl - r2 = dot_product(symba_plA%xh(:,i), symba_plA%xh(:,i)) - irh(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc(symba_plA, param%j2rp2, param%j4rp4, symba_plA%xh(:,:), irh, aobl) - do i = 2, npl - symba_plA%ah(:,i) = symba_plA%ah(:,i) + aobl(:, i) - aobl(:, 1) - end do - end if - if (lextra_force) call symba_user_getacch(t, npl, symba_plA) - - return - - end procedure symba_getacch -end submodule s_symba_getacch diff --git a/src/symba/symba_getacch_eucl.f90 b/src/symba/symba_getacch_eucl.f90 deleted file mode 100644 index fdb8e699a..000000000 --- a/src/symba/symba_getacch_eucl.f90 +++ /dev/null @@ -1,96 +0,0 @@ -submodule (symba) s_symba_getacch_eucl -contains - module procedure symba_getacch_eucl - !! author: Jacob R. Elliott - !! - !! Same as symba_getacch but now uses the single-loop blocking to evaluate the Euclidean distance matrix - !! Accelerations in an encounter are not included here - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_getacch.f90 - !! Adapted from Hal Levison's Swift routine symba5_getacch.f -use swiftest -implicit none - logical , save :: lmalloc = .true. - integer(I4B) :: i, j, index_i, index_j, k, counter - real(DP) :: rji2, irij3, faci, facj, r2, fac - real(DP), dimension(NDIM) :: dx - real(DP), dimension(npl, NDIM) :: ah - real(DP), dimension(:), allocatable, save :: irh - real(DP), dimension(:, :), allocatable, save :: xh, aobl - ! real(DP), allocatable, dimension(:,:) :: dist_plpl_array - - -!executable code - - symba_plA%ah(:,2:npl) = 0.0_DP - ah(:,2:npl) = 0.0_DP - - ! call util_dist_eucl_plpl(npl,symba_plA%xh, num_plpl_comparisons, k_plpl, dist_plpl_array) ! does not care about mtiny - -! there is floating point arithmetic round off error in this loop -! for now, we will keep it in the serial operation, so we can easily compare -! it to the older swifter versions - -!$omp parallel do default(none) schedule(static) & -!$omp num_threads(min(omp_get_max_threads(),ceiling(num_plpl_comparisons/10000.))) & -!$omp shared (num_plpl_comparisons, k_plpl, symba_plA) & -!$omp private (i, j, k, dx, rji2, irij3, faci, facj) & -!$omp reduction(+:ah) - do k = 1, num_plpl_comparisons - i = k_plpl(1,k) - j = k_plpl(2,k) - - if ((.not. symba_plA%lmerged(i) .or. (.not. symba_plA%lmerged(j)) .or. & - (symba_plA%index_parent(i) /= symba_plA%index_parent(j)))) then - - dx(:) = symba_plA%xh(:,k_plpl(2,k)) - symba_plA%xh(:,k_plpl(1,k)) - rji2 = dot_product(dx(:), dx(:)) - irij3 = 1.0_DP/(rji2*sqrt(rji2)) - faci = symba_plA%mass(i)*irij3 - facj = symba_plA%mass(j)*irij3 - ah(:,i) = ah(:,i) + facj*dx(:) - ah(:,j) = ah(:,j) - faci*dx(:) - - endif - end do -!$omp end parallel do - - symba_plA%ah(:,2:npl) = ah(:,2:npl) - - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if ((.not. symba_plA%lmerged(index_i)) .or. (.not. symba_plA%lmerged(index_j)) & - .or. (symba_plA%index_parent(index_i) /= symba_plA%index_parent(index_j))) then !need to update parent/children - dx(:) = symba_plA%xh(:,index_j) - symba_plA%xh(:,index_i) - rji2 = dot_product(dx(:), dx(:)) - irij3 = 1.0_DP/(rji2*sqrt(rji2)) - faci = symba_plA%mass(index_i)*irij3 - facj = symba_plA%mass(index_j)*irij3 - symba_plA%ah(:,index_i) = symba_plA%ah(:,index_i) - facj*dx(:) - symba_plA%ah(:,index_j) = symba_plA%ah(:,index_j) + faci*dx(:) - end if - end do - - if (param%loblatecb) then - if (lmalloc) then - allocate(xh(npl, NDIM), aobl(npl, NDIM), irh(npl)) - lmalloc = .false. - end if - do i = 2, npl - - r2 = dot_product(symba_plA%xh(:,i), symba_plA%xh(:,i)) - irh(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc(symba_plA, param%j2rp2, param%j4rp4, symba_plA%xh(:,:), irh, aobl) - do i = 2, npl - symba_plA%ah(:,i) = symba_plA%ah(:,i) + aobl(:, i) - aobl(:, 1) - end do - end if - - if (lextra_force) call symba_user_getacch(t, npl, symba_plA) - - return - - end procedure symba_getacch_eucl -end submodule s_symba_getacch_eucl diff --git a/src/symba/symba_getacch_tp.f90 b/src/symba/symba_getacch_tp.f90 deleted file mode 100644 index 97f52eef1..000000000 --- a/src/symba/symba_getacch_tp.f90 +++ /dev/null @@ -1,83 +0,0 @@ -submodule (symba) s_symba_getacch_tp -contains - module procedure symba_getacch_tp - !! author: David A. Minton - !! - !! Compute heliocentric accelerations of test particles - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_getacch_tp.f90 - !! Adapted from Hal Levison's Swift routine symba5_getacch.f - use swiftest - implicit none - logical , save :: lmalloc = .true. - integer(I4B) :: i, j, index_pl, index_tp - real(DP) :: rji2, irij3, faci, facj, r2, fac, mu - real(DP), dimension(NDIM) :: dx - real(DP), dimension(:), allocatable, save :: irh, irht - real(DP), dimension(:, :), allocatable, save :: aobl, xht, aoblt - -! executable code - !removed by d. minton - !helio_tpp => symba_tp1p - !^^^^^^^^^^^^^^^^^^^^ - ! openmp parallelization added by d. minton - do i = 1, ntp - !added by d. minton - !helio_tpp => symba_tp1p%symba_tppa(i)%thisp - !^^^^^^^^^^^^^^^^^^ - symba_tpA%ah(:,i) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - if (symba_tpA%status(i) == ACTIVE) then - !swifter_plp => swifter_pl1p - !do j = 2, nplm - do j = 2, nplm - !swifter_plp => swifter_plp%nextp - dx(:) = symba_tpA%xh(:,i) - xh(:, j) - r2 = dot_product(dx(:), dx(:)) - fac = symba_plA%mass(j)/(r2*sqrt(r2)) - symba_tpA%ah(:,i) = symba_tpA%ah(:,i) - fac*dx(:) - end do - end if - !removed by d. minton - !helio_tpp => helio_tpp%nextp - !^^^^^^^^^^^^^^^^^^^^ - end do - do i = 1, npltpenc - !swifter_plp => pltpenc_list(i)%plp%swifter - !helio_tpp => pltpenc_list(i)%tpp - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if (symba_tpA%status(index_tp) == ACTIVE) then - dx(:) = symba_tpA%xh(:,index_tp) - symba_plA%xh(:,index_pl) - r2 = dot_product(dx(:), dx(:)) - fac = symba_plA%mass(index_pl)/(r2*sqrt(r2)) - symba_tpA%ah(:,index_tp) = symba_tpA%ah(:,index_tp) + fac*dx(:) - end if - end do - if (param%loblatecb) then - if (lmalloc) then - allocate(aobl(NDIM, param%nplmax), irh(param%nplmax), xht(NDIM, param%ntpmax), aoblt(NDIM, param%ntpmax), irht(param%ntpmax)) - lmalloc = .false. - end if - do i = 2, npl - r2 = dot_product(xh(:, i), xh(:, i)) - irh(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc(symba_plA, param%j2rp2, param%j4rp4, symba_plA%xh(:,:), irh, aobl) - mu = symba_plA%mass(1) - do i = 1, ntp - xht(:, i) = symba_tpA%xh(:,i) !optimize - r2 = dot_product(xht(:, i), xht(:, i)) - irht(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc_tp(ntp, xht, param%j2rp2, param%j4rp4, irht, aoblt, mu) - do i = 1, ntp - if (symba_tpA%status(i) == ACTIVE) & - symba_tpA%ah(:,i) = symba_tpA%ah(:,i) + aoblt(:, i) - aobl(:, 1) - end do - end if - if (lextra_force) call symba_user_getacch_tp(t, ntp, symba_tpA) - - return - - end procedure symba_getacch_tp -end submodule s_symba_getacch_tp diff --git a/src/symba/symba_getacch_tp_eucl.f90 b/src/symba/symba_getacch_tp_eucl.f90 deleted file mode 100644 index 0cd4c16cd..000000000 --- a/src/symba/symba_getacch_tp_eucl.f90 +++ /dev/null @@ -1,85 +0,0 @@ -submodule (symba) s_symba_getacch_tp_eucl -contains - module procedure symba_getacch_tp_eucl - !! author: Jacob R. Elliott - !! - !! Compute heliocentric accelerations of test particles. - !! Accelerations in an encounter are not included here - !! Uses the single-loop blocking to evaluate the Euclidean distance matrix - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_getacch_tp_eucl.f90 - !! Adapted from Hal Levison's Swift routine symba5_getacch.f -use swiftest -implicit none - logical , save :: lmalloc = .true. - integer(I4B) :: i, j, k, index_pl, index_tp - real(DP) :: rji2, irij3, faci, facj, r2, fac, mu - real(DP), dimension(NDIM) :: dx - real(DP), dimension(:), allocatable, save :: irh, irht - real(DP), dimension(:, :), allocatable, save :: aobl, xht, aoblt - real(DP), dimension(ntp, NDIM) :: ah - -! executable code - - ah(:, 1:ntp) = 0.0_DP - - ! call util_dist_eucl_pltp(npl, ntp, symba_plA%xh, symba_tpA%xh, & - ! num_pltp_comparisons, k_pltp, dist_pltp_array) - -!$omp parallel do default(none) schedule(static) & -!$omp shared(num_pltp_comparisons, symba_plA, symba_tpA, k_pltp) & -!$omp private(k, i, j, dx, r2, fac) & -!$omp reduction(+:ah) - do k = 1,num_pltp_comparisons - j = k_pltp(2,k) - if (symba_tpA%status(j) == ACTIVE) then - i = k_pltp(1,k) - dx(:) = symba_tpA%xh(:,k_pltp(2,k)) - symba_plA%xh(:,k_pltp(1,k)) - r2 = dot_product(dx(:), dx(:)) - fac = symba_plA%mass(i)/(r2*sqrt(r2)) - ah(:,j) = ah(:,j) - fac*dx(:) - endif - enddo -!$omp end parallel do - - symba_tpA%ah(:, 1:ntp) = ah(:, 1:ntp) - - do i = 1, npltpenc - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if (symba_tpA%status(index_tp) == ACTIVE) then - dx(:) = symba_tpA%xh(:,index_tp) - symba_plA%xh(:,index_pl) - r2 = dot_product(dx(:), dx(:)) - fac = symba_plA%mass(index_pl)/(r2*sqrt(r2)) - symba_tpA%ah(:,index_tp) = symba_tpA%ah(:,index_tp) + fac*dx(:) - end if - end do - ! $omp end parallel do - if (param%loblatecb) then - if (lmalloc) then - allocate(aobl(NDIM, param%nplmax), irh(param%nplmax), xht(NDIM, param%ntpmax), aoblt(NDIM, param%ntpmax), irht(param%ntpmax)) - lmalloc = .false. - end if - do i = 2, npl - r2 = dot_product(xh(:, i), xh(:, i)) - irh(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc(symba_plA, param%j2rp2, param%j4rp4, symba_plA%xh(:,:), irh, aobl) - mu = symba_plA%mass(1) - do i = 1, ntp - xht(:, i) = symba_tpA%xh(:,i) !optimize - r2 = dot_product(xht(:, i), xht(:, i)) - irht(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc_tp(ntp, xht, param%j2rp2, param%j4rp4, irht, aoblt, mu) - do i = 1, ntp - if (symba_tpA%status(i) == ACTIVE) & - symba_tpA%ah(:,i) = symba_tpA%ah(:,i) + aoblt(:, i) - aobl(:, 1) - end do - end if - if (lextra_force) call symba_user_getacch_tp(t, ntp, symba_tpA) - - return - - end procedure symba_getacch_tp_eucl -end submodule s_symba_getacch_tp_eucl diff --git a/src/symba/symba_helio_drift.f90 b/src/symba/symba_helio_drift.f90 deleted file mode 100644 index 07b8d97a5..000000000 --- a/src/symba/symba_helio_drift.f90 +++ /dev/null @@ -1,38 +0,0 @@ -submodule (symba) s_symba_helio_drift -contains - module procedure symba_helio_drift - !! author: David A. Minton - !! - !! Loop through planets and call Danby drift routine - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_helio_drift.f90 - !! Adapted from Hal Levison's Swift routine symba5_helio_drift.f -use swiftest -implicit none - integer(I4B) :: i, iflag - real(DP) :: mu - -! executable code - mu = symba_plA%mass(1) -!$omp parallel do default(none) & -!$omp shared (symba_plA, npl, mu, dt, irec) & -!$omp private (i, iflag) - do i = 2, npl - if ((symba_plA%levelg(i) == irec) .and. (symba_plA%status(i) == ACTIVE)) then - call drift_one(mu, symba_plA%xh(1,i), symba_plA%xh(2,i), symba_plA%xh(3,i), symba_plA%vb(1,i), symba_plA%vb(2,i), symba_plA%vb(3,i), dt, iflag) - if (iflag /= 0) then - write(*, *) " massive body ", symba_plA%name(i), " is lost!!!!!!!!!!" - write(*, *) mu, dt - write(*, *) symba_plA%xh(:,i) - write(*, *) symba_plA%vb(:,i) - write(*, *) " stopping " - call util_exit(FAILURE) - end if - end if - end do -!$omp end parallel do - - return - - end procedure symba_helio_drift -end submodule s_symba_helio_drift diff --git a/src/symba/symba_helio_drift_tp.f90 b/src/symba/symba_helio_drift_tp.f90 deleted file mode 100644 index 05d248360..000000000 --- a/src/symba/symba_helio_drift_tp.f90 +++ /dev/null @@ -1,28 +0,0 @@ -submodule (symba) s_symba_helio_drift_tp -contains - module procedure symba_helio_drift_tp - !! author: David A. Minton - !! - !! Loop through test particles and call Danby drift routine - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_helio_drift_tp.f90 - !! Adapted from Hal Levison's Swift routine symba5_helio_drift.f - use swiftest - implicit none - integer(I4B) :: i, iflag - - associate(symba_tpA%xh => xh, symba_tpA%vb => vb) - do i = 1, ntp - if ((symba_tpA%levelg(i) == irec) .and. (symba_tpA%status(i) == ACTIVE)) then - call drift_one(mu, xh(1,i), xh(2,i), xh(3,i), vb(1,i), vb(2,i), vb(3,i), dt, iflag) - if (iflag /= 0) then - symba_tpA%status(i) = DISCARDED_DRIFTERR - write(*, *) "particle ", symba_tpA%name(i), " lost due to error in danby drift" - end if - end if - end do - - return - - end procedure symba_helio_drift_tp -end submodule s_symba_helio_drift_tp diff --git a/src/symba/symba_helio_getacch.f90 b/src/symba/symba_helio_getacch.f90 deleted file mode 100644 index 6d69de2b9..000000000 --- a/src/symba/symba_helio_getacch.f90 +++ /dev/null @@ -1,50 +0,0 @@ -submodule (symba) s_symba_helio_getacch -contains - module procedure symba_helio_getacch - !! author: David A. Minton - !! - !! Compute heliocentric accelerations of planets - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_helio_getacch.f90 - !! Adapted from Hal Levison's Swift routine symba5_helio_getacch.f -use swiftest -implicit none - logical , save :: lmalloc = .true. - integer(I4B) :: i - real(DP) :: r2 - real(DP), dimension(:), allocatable, save :: irh - real(DP), dimension(:, :), allocatable, save :: xh, aobl - - -! executable code - if (lflag) then - do i = 2, npl - helio_plA%ah(:,i) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - call symba_helio_getacch_int(npl, nplm, helio_plA) - end if - if (param%loblatecb) then - if (lmalloc) then - allocate(xh(NDIM, param%nplmax), aobl(NDIM, param%nplmax), irh(param%nplmax)) - lmalloc = .false. - end if - do i = 2, npl - xh(:, i) = helio_plA%xh(:,i) - r2 = dot_product(xh(:, i), xh(:, i)) - irh(i) = 1.0_DP/sqrt(r2) - end do - call obl_acc(helio_plA, param%j2rp2, param%j4rp4, xh, irh, aobl) - do i = 2, npl - helio_plA%ah(:,i) = helio_plA%ah(:,i) + aobl(:, i) - aobl(:, 1) - end do - else - do i = 2, npl - helio_plA%ah(:,i) = helio_plA%ah(:,i) - end do - end if - if (lextra_force) call helio_user_getacch(t, npl, helio_plA) - - return - - end procedure symba_helio_getacch -end submodule s_symba_helio_getacch diff --git a/src/symba/symba_helio_getacch_int.f90 b/src/symba/symba_helio_getacch_int.f90 deleted file mode 100644 index 8093c48d7..000000000 --- a/src/symba/symba_helio_getacch_int.f90 +++ /dev/null @@ -1,31 +0,0 @@ -submodule (symba) s_symba_helio_getacch_int -contains - module procedure symba_helio_getacch_int - !! author: David A. Minton - !! - !! Compute direct cross term heliocentric accelerations of planets - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_helio_getacch_int.f90 - !! Adapted from Hal Levison's Swift routine symba5_helio_getacch.f -use swiftest -implicit none - integer(I4B) :: i, j - real(DP) :: rji2, irij3, faci, facj - real(DP), dimension(NDIM) :: dx - -! executable code - do i = 2, nplm - do j = i + 1, npl - dx(:) = helio_plA%swiftest%xh(:,j) - helio_plA%swiftest%xh(:,i) - rji2 = dot_product(dx(:), dx(:)) - irij3 = 1.0_DP/(rji2*sqrt(rji2)) - faci = helio_plA%swiftest%mass(i)*irij3 - facj = helio_plA%swiftest%mass(j)*irij3 - helio_plA%ah(:,i) = helio_plA%ah(:,i) + facj*dx(:) - helio_plA%ah(:,j) = helio_plA%ah(:,j) - faci*dx(:) - end do - end do - return - - end procedure symba_helio_getacch_int -end submodule s_symba_helio_getacch_int diff --git a/src/symba/symba_kick.f90 b/src/symba/symba_kick.f90 deleted file mode 100644 index f62be3259..000000000 --- a/src/symba/symba_kick.f90 +++ /dev/null @@ -1,104 +0,0 @@ -submodule (symba) s_symba_kick -contains - module procedure symba_kick - !! author: David A. Minton - !! - !! Kick barycentric velocities of planets and ACTIVE test particles within SyMBA recursion - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_kick.f90 - !! Adapted from Hal Levison's Swift routine symba5_kick.f -use swiftest -implicit none - integer(I4B) :: i, irm1, irecl, index_i,index_j,index_tp,index_pl - real(DP) :: r, rr, ri, ris, rim1, r2, ir3, fac, faci, facj - real(DP), dimension(NDIM) :: dx - -! executable code - irm1 = irec - 1 - if (sgn < 0.0_DP) then - irecl = irec - 1 - else - irecl = irec - end if - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - symba_plA%ah(:,index_i) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - symba_plA%ah(:,index_j) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - do i = 1, npltpenc - index_tp = pltpenc_list%indextp(i) - symba_tpA%ah(:,index_tp) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - do i = 1, nplplenc - if (plplenc_list%status(i) == ACTIVE) then - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if ((symba_plA%levelg(index_i) >= irm1) .and. (symba_plA%levelg(index_j) >= irm1)) then - ri = ((symba_plA%rhill(index_i) & - + symba_plA%rhill(index_j))**2)*(rhscale**2)*(rshell**(2*irecl)) - rim1 = ri*(rshell**2) - dx(:) = symba_plA%xh(:,index_j) - symba_plA%xh(:,index_i) - r2 = dot_product(dx(:), dx(:)) - if (r2 < rim1) then - fac = 0.0_DP - else if (r2 < ri) then - ris = sqrt(ri) - r = sqrt(r2) - rr = (ris - r)/(ris*(1.0_DP - rshell)) - fac = (r2**(-1.5_DP))*(1.0_DP - 3.0_DP*(rr**2) + 2.0_DP*(rr**3)) - else - ir3 = 1.0_DP/(r2*sqrt(r2)) - fac = ir3 - end if - faci = fac*symba_plA%mass(index_i) - facj = fac*symba_plA%mass(index_j) - symba_plA%ah(:,index_i) = symba_plA%ah(:,index_i) + facj*dx(:) - symba_plA%ah(:,index_j) = symba_plA%ah(:,index_j) - faci*dx(:) - end if - end if - end do - do i = 1, npltpenc - if (pltpenc_list%status(i) == ACTIVE) then - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if ((symba_plA%levelg(index_pl) >= irm1) .and. (symba_tpA%levelg(index_tp) >= irm1)) then - ri = ((symba_plA%rhill(index_pl))**2)*(rhscale**2)*(rshell**(2*irecl)) - rim1 = ri*(rshell**2) - dx(:) = symba_tpA%xh(:,index_tp) - symba_plA%xh(:,index_pl) - r2 = dot_product(dx(:), dx(:)) - if (r2 < rim1) then - fac = 0.0_DP - else if (r2 < ri) then - ris = sqrt(ri) - r = sqrt(r2) - rr = (ris - r)/(ris*(1.0_DP - rshell)) - fac = (r2**(-1.5_DP))*(1.0_DP - 3.0_DP*(rr**2) + 2.0_DP*(rr**3)) - else - ir3 = 1.0_DP/(r2*sqrt(r2)) - fac = ir3 - end if - faci = fac*symba_plA%mass(index_pl) - symba_tpA%ah(:,index_tp) = symba_tpA%ah(:,index_tp) - faci*dx(:) - end if - end if - end do - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - symba_plA%vb(:,index_i) = symba_plA%vb(:,index_i) + sgn*dt*symba_plA%ah(:,index_i) - symba_plA%vb(:,index_j) = symba_plA%vb(:,index_j) + sgn*dt*symba_plA%ah(:,index_j) - symba_plA%ah(:,index_i) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - symba_plA%ah(:,index_j) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - do i = 1, npltpenc - index_tp = pltpenc_list%indextp(i) - if (symba_tpA%status(index_tp) == ACTIVE) & - symba_tpA%vb(:,index_tp) = symba_tpA%vb(:,index_tp) + sgn*dt*symba_tpA%ah(:,index_tp) - symba_tpA%ah(:,index_tp) = (/ 0.0_DP, 0.0_DP, 0.0_DP /) - end do - - return - - end procedure symba_kick -end submodule s_symba_kick diff --git a/src/symba/symba_merge_pl.f90 b/src/symba/symba_merge_pl.f90 deleted file mode 100644 index 486da9f82..000000000 --- a/src/symba/symba_merge_pl.f90 +++ /dev/null @@ -1,221 +0,0 @@ -submodule (symba) s_symba_merge_pl -contains - module procedure symba_merge_pl - !! author: David A. Minton - !! - !! Check whether or not bodies are colliding or on collision path - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_merge_pl.f90 - !! Adapted from Hal Levison's Swift routine symba5_merge.f - use swiftest - implicit none - logical :: lmerge - integer(I4B) :: i, j, k, stat1, stat2, index1, index2, index_keep, index_rm, indexchild - integer(I4B) :: index1_child, index2_child, index1_parent, index2_parent, index_big1, index_big2 - integer(I4B) :: name1, name2 - real(DP) :: r2, rlim, rlim2, vdotr, tcr2, dt2, mtot, a, e, q, m1, m2, mtmp, mmax - real(DP) :: eold, enew, rad1, rad2, mass1, mass2 - real(DP), dimension(NDIM) :: xr, vr, x1, v1, x2, v2, xnew, vnew - integer(I4B), dimension(npl) :: array_index1_child, array_index2_child, array_keep_child, array_rm_child - -! executable code - lmerge = .false. - - index1 = plplenc_list%index1(index_enc) - index2 = plplenc_list%index2(index_enc) - - rlim = symba_plA%radius(index1) + symba_plA%radius(index2) - xr(:) = symba_plA%xh(:,index2) - symba_plA%xh(:,index1) - r2 = dot_product(xr(:), xr(:)) - rlim2 = rlim*rlim - ! checks if bodies are actively colliding in this time step - if (rlim2 >= r2) then - lmerge = .true. - ! if they are not actively colliding in this time step, - !checks if they are going to collide next time step based on velocities and q - else - vr(:) = symba_plA%vb(:,index2) - symba_plA%vb(:,index1) - vdotr = dot_product(xr(:), vr(:)) - if (plplenc_list%lvdotr(index_enc) .and. (vdotr > 0.0_DP)) then - tcr2 = r2/dot_product(vr(:), vr(:)) - dt2 = dt*dt - if (tcr2 <= dt2) then - mtot = symba_plA%mass(index1) + symba_plA%mass(index2) - call orbel_xv2aeq(xr(:), vr(:), mtot, a, e, q) - if (q < rlim) lmerge = .true. - end if - ! if no collision is going to happen, write as close encounter, not merger - if (.not. lmerge) then - if (encounter_file /= "") then - name1 = symba_plA%name(index1) - m1 = symba_plA%mass(index1) - rad1 = symba_plA%radius(index1) - x1(:) = symba_plA%xh(:,index1) - v1(:) = symba_plA%vb(:,index1) - vbs(:) - name2 = symba_plA%name(index2) - m2 = symba_plA%mass(index2) - rad2 = symba_plA%radius(index2) - x2(:) = symba_plA%xh(:,index2) - v2(:) = symba_plA%vb(:,index2) - vbs(:) - - call io_write_encounter(t, name1, name2, m1, m2, rad1, rad2, x1(:), x2(:), & - v1(:), v2(:), encounter_file, out_type) - end if - end if - end if - end if - !set up the merger for symba_discard_merge_pl - if (lmerge) then - symba_plA%lmerged(index1) = .true. - symba_plA%lmerged(index2) = .true. - index1_parent = symba_plA%index_parent(index1) - m1 = symba_plA%mass(index1_parent) - mass1 = m1 - rad1 = symba_plA%radius(index1_parent) - x1(:) = m1*symba_plA%xh(:,index1_parent) - v1(:) = m1*symba_plA%vb(:,index1_parent) - mmax = m1 - name1 = symba_plA%name(index1_parent) - index_big1 = index1_parent - stat1 = symba_plA%status(index1_parent) - array_index1_child(1:npl) = symba_plA%index_child(1:npl,index1_parent) - do i = 1, symba_plA%nchild(index1_parent) ! initialize an array of children - index1_child = array_index1_child(i) - mtmp = symba_plA%mass(index1_child) - if (mtmp > mmax) then - mmax = mtmp - name1 = symba_plA%name(index1_child) - index_big1 = index1_child - stat1 = symba_plA%status(index1_child) - end if - m1 = m1 + mtmp - x1(:) = x1(:) + mtmp*symba_plA%xh(:,index1_child) - v1(:) = v1(:) + mtmp*symba_plA%vb(:,index1_child) - end do - x1(:) = x1(:)/m1 - v1(:) = v1(:)/m1 - index2_parent = symba_plA%index_parent(index2) - m2 = symba_plA%mass(index2_parent) - mass2 = m2 - rad2 = symba_plA%radius(index2_parent) - x2(:) = m2*symba_plA%xh(:,index2_parent) - v2(:) = m2*symba_plA%vb(:,index2_parent) - mmax = m2 - name2 = symba_plA%name(index2_parent) - index_big2 = index2_parent - stat2 = symba_plA%status(index2_parent) - array_index2_child(1:npl) = symba_plA%index_child(1:npl,index2_parent) - do i = 1, symba_plA%nchild(index2_parent) - index2_child = array_index2_child(i) - mtmp = symba_plA%mass(index2_child) - if (mtmp > mmax) then - mmax = mtmp - name2 = symba_plA%name(index2_child) - index_big2 = index2_child - stat2 = symba_plA%status(index2_child) - end if - m2 = m2 + mtmp - x2(:) = x2(:) + mtmp*symba_plA%xh(:,index2_child) - v2(:) = v2(:) + mtmp*symba_plA%vb(:,index2_child) - end do - x2(:) = x2(:)/m2 - v2(:) = v2(:)/m2 - mtot = m1 + m2 - xnew(:) = (m1*x1(:) + m2*x2(:))/mtot - vnew(:) = (m1*v1(:) + m2*v2(:))/mtot - write(*, *) "merging particles ", name1, " and ", name2, " at time t = ",t - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name1 - mergesub_list%status(nmergesub) = MERGED - mergesub_list%xh(:,nmergesub) = x1(:) - mergesub_list%vh(:,nmergesub) = v1(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass1 - mergesub_list%radius(nmergesub) = rad1 - nmergesub = nmergesub + 1 - mergesub_list%name(nmergesub) = name2 - mergesub_list%status(nmergesub) = MERGED - mergesub_list%xh(:,nmergesub) = x2(:) - mergesub_list%vh(:,nmergesub) = v2(:) - vbs(:) - mergesub_list%mass(nmergesub) = mass2 - mergesub_list%radius(nmergesub) = rad2 - nmergeadd = nmergeadd + 1 - if (m2 > m1) then - index_keep = index_big2 - index_rm = index_big1 - mergeadd_list%name(nmergeadd) = name2 - mergeadd_list%status(nmergeadd) = stat2 - - else - index_keep = index_big1 - index_rm = index_big2 - mergeadd_list%name(nmergeadd) = name1 - mergeadd_list%status(nmergeadd) = stat1 - - end if - mergeadd_list%ncomp(nmergeadd) = 2 - mergeadd_list%xh(:,nmergeadd) = xnew(:) - mergeadd_list%vh(:,nmergeadd) = vnew(:) - vbs(:) - eold = 0.5_DP*(m1*dot_product(v1(:), v1(:)) + m2*dot_product(v2(:), v2(:))) - xr(:) = x2(:) - x1(:) - eold = eold - m1*m2/norm2(xr(:)) - enew = 0.5_DP*mtot*dot_product(vnew(:), vnew(:)) - eoffset = eoffset + eold - enew - - !write(*,*) "symba_merge_pl.f90 name", mergeadd_list%name(nmergeadd) - !write(*,*) "symba_merge_pl.f90 xh", mergeadd_list%xh(:,nmergeadd) - !write(*,*) "symba_merge_pl.f90 vh", mergeadd_list%vh(:,nmergeadd) - !write(*,*) "symba_merge_pl.f90 eoffset", eoffset - do k = 1, nplplenc !go through the encounter list and for particles actively encoutering, get their children - if (plplenc_list%status(k) == ACTIVE) then - do i = 0, symba_plA%nchild(index1_parent) - if (i == 0) then - index1_child = index1_parent - else - index1_child = array_index1_child(i) - end if - do j = 0, symba_plA%nchild(index2_parent) - if (j == 0) then - index2_child = index2_parent - else - index2_child = array_index2_child(j) - end if - if ((index1_child == plplenc_list%index1(k)) .and. (index2_child == plplenc_list%index2(k))) then - plplenc_list%status(k) = MERGED - else if ((index1_child == plplenc_list%index2(k)) .and. (index2_child == plplenc_list%index1(k))) then - plplenc_list%status(k) = MERGED - end if - end do - end do - end if - end do - symba_plA%xh(:,index1_parent) = xnew(:) - symba_plA%vb(:,index1_parent) = vnew(:) - symba_plA%xh(:,index2_parent) = xnew(:) - symba_plA%vb(:,index2_parent) = vnew(:) - array_keep_child(1:npl) = symba_plA%index_child(1:npl,index1_parent) - do i = 1, symba_plA%nchild(index1_parent) - indexchild = array_keep_child(i) - symba_plA%xh(:,indexchild) = xnew(:) - symba_plA%vb(:,indexchild) = vnew(:) - end do - - symba_plA%index_child((symba_plA%nchild(index1_parent)+1),index1_parent) = index2_parent - array_rm_child(1:npl) = symba_plA%index_child(1:npl,index2_parent) - symba_plA%index_parent(index2) = index1_parent - - do i = 1, symba_plA%nchild(index2_parent) - symba_plA%index_parent(array_rm_child(i)) = index1_parent - indexchild = array_rm_child(i) - symba_plA%xh(:,indexchild) = xnew(:) - symba_plA%vb(:,indexchild) = vnew(:) - end do - do i = 1, symba_plA%nchild(index2_parent) - symba_plA%index_child(symba_plA%nchild(index1_parent)+i+1,index1_parent)= array_rm_child(i) - end do - symba_plA%nchild(index1_parent) = symba_plA%nchild(index1_parent) + symba_plA%nchild(index2_parent) + 1 - end if - - return - - end procedure symba_merge_pl -end submodule s_symba_merge_pl diff --git a/src/symba/symba_merge_tp.f90 b/src/symba/symba_merge_tp.f90 deleted file mode 100644 index 728d0b8a0..000000000 --- a/src/symba/symba_merge_tp.f90 +++ /dev/null @@ -1,65 +0,0 @@ -submodule (symba) s_symba_merge_tp -contains - module procedure symba_merge_tp - !! author: David A. Minton - !! - !! Check for merger between planet and test particle in SyMBAs - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_merge_tp.f90 - !! Adapted from Hal Levison's Swift routine symba5_merge.f -use swiftest -implicit none - logical :: lmerge - integer(I4B) :: name1, name2, indexpl, indextp - real(DP) :: r2, rlim, rlim2, vdotr, tcr2, dt2, mu, a, e, q, rad1 - real(DP), dimension(NDIM) :: xr, vr, xh1, vh1, xh2, vh2 - -! executable code - lmerge = .false. - - indexpl = pltpenc_list%indexpl(index_enc) - indextp = pltpenc_list%indextp(index_enc) - - rlim = symba_plA%radius(indexpl) - xr(:) = symba_tpA%xh(:,indextp) - symba_plA%xh(:,indexpl) - r2 = dot_product(xr(:), xr(:)) - rlim2 = rlim*rlim - if (rlim2 >= r2) then - lmerge = .true. - else - vr(:) = symba_tpA%vb(:,indextp) - symba_plA%vb(:,indexpl) - vdotr = dot_product(xr(:), vr(:)) - if (pltpenc_list%lvdotr(index_enc) .and. (vdotr > 0.0_DP)) then - mu = symba_plA%mass(indexpl) - tcr2 = r2/dot_product(vr(:), vr(:)) - dt2 = dt*dt - if (tcr2 <= dt2) then - call orbel_xv2aeq(xr(:), vr(:), mu, a, e, q) - if (q < rlim) lmerge = .true. - end if - if (.not. lmerge) then - if (encounter_file /= "") then - name1 = symba_plA%name(indexpl) - rad1 = symba_plA%radius(indexpl) - xh1(:) = symba_plA%xh(:,indexpl) - vh1(:) = symba_plA%vb(:,indexpl) - vbs(:) - name2 = symba_tpA%name(indextp) - xh2(:) = symba_tpA%xh(:,indextp) - vh2(:) = symba_tpA%vb(:,indextp) - vbs(:) - call io_write_encounter(t, name1, name2, mu, 0.0_DP, rad1, 0.0_DP, & - xh1(:), xh2(:), vh1(:), vh2(:), encounter_file, out_type) - end if - end if - end if - end if - if (lmerge) then - pltpenc_list%status(index_enc) = MERGED - symba_tpA%status = DISCARDED_PLR - write(*, *) "particle ", symba_tpA%name, " too close to massive body ", & - symba_plA%name, " at t = ", t - end if - - return - - end procedure symba_merge_tp -end submodule s_symba_merge_tp diff --git a/src/symba/symba_peri.f90 b/src/symba/symba_peri.f90 deleted file mode 100644 index 654d507fa..000000000 --- a/src/symba/symba_peri.f90 +++ /dev/null @@ -1,89 +0,0 @@ -submodule (symba) s_symba_peri -contains - module procedure symba_peri - !! author: David A. Minton - !! - !! Determine system pericenter passages for planets in SyMBA - !! If the coordinate system used is barycentric, then this routine assumes that the barycentric coordinates in the - !! massive body structures are up-to-date and are not recomputed - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_peri.f90 - !! Adapted from Hal Levison's Swift routine util_mass_peri.f -use swiftest -implicit none - integer(I4B) :: i - real(DP) :: vdotr, e, mu, msun - -! executable code - msun = symba_plA%mass(1) - if (lfirst) then - if (qmin_coord == "helio") then - do i = 2, npl - if (symba_plA%status(i) == ACTIVE) then - vdotr = dot_product(symba_plA%xh(:,i), symba_plA%vh(:,i)) - if (vdotr > 0.0_DP) then - symba_plA%isperi(i) = 1 - else - symba_plA%isperi(i) = -1 - end if - end if - end do - else - do i = 2, npl - if (symba_plA%status(i) == ACTIVE) then - vdotr = dot_product(symba_plA%xb(:,i), symba_plA%vb(:,i)) - if (vdotr > 0.0_DP) then - symba_plA%isperi(i) = 1 - else - symba_plA%isperi(i) = -1 - end if - end if - end do - end if - else - if (qmin_coord == "helio") then - do i = 2, npl - if (symba_plA%status(i) == ACTIVE) then - vdotr = dot_product(symba_plA%xh(:,i), symba_plA%vh(:,i)) - if (symba_plA%isperi(i) == -1) then - if (vdotr >= 0.0_DP) then - symba_plA%isperi(i) = 0 - mu = msun + symba_plA%mass(i) - call orbel_xv2aeq(symba_plA%xh(:,i), & - symba_plA%vh(:,i), mu, symba_plA%atp(i), e, symba_plA%peri(i)) - end if - else - if (vdotr > 0.0_DP) then - symba_plA%isperi(i) = 1 - else - symba_plA%isperi(i) = -1 - end if - end if - end if - end do - else - do i = 2, npl - if (symba_plA%status(i) == ACTIVE) then - vdotr = dot_product(symba_plA%xb(:,i), symba_plA%vb(:,i)) - if (symba_plA%isperi(i) == -1) then - if (vdotr >= 0.0_DP) then - symba_plA%isperi(i) = 0 - call orbel_xv2aeq(symba_plA%xb(:,i), & - symba_plA%vb(:,i), msys, symba_plA%atp(i), e, symba_plA%peri(i)) - end if - else - if (vdotr > 0.0_DP) then - symba_plA%isperi(i) = 1 - else - symba_plA%isperi(i) = -1 - end if - end if - end if - end do - end if - end if - - return - - end procedure symba_peri -end submodule s_symba_peri diff --git a/src/symba/symba_rearray.f90 b/src/symba/symba_rearray.f90 deleted file mode 100644 index 46a81b28d..000000000 --- a/src/symba/symba_rearray.f90 +++ /dev/null @@ -1,182 +0,0 @@ -submodule (symba) s_symba_rearray -contains - module procedure symba_rearray - !! author: Jennifer L. L. Pouplin, Carlisle A. Wishard, and David A. Minton - !! - !! Redo array of pl and tp based on discarded and added pl and tp - use swiftest - implicit none - integer(I4B) :: i, nkpl, nktp, nfrag - real(DP) :: mu, energy, ap, r, v2 - logical, dimension(npl) :: discard_l_pl, frag_l_add - logical, dimension(ntp) :: discard_l_tp - -! executable code - - if (ldiscard) then - nsppl = 0 - nkpl = 0 - discard_l_pl(1:npl) = (symba_plA%status(1:npl) /= ACTIVE) - nsppl = count(discard_l_pl) - nkpl = npl - nsppl - frag_l_add = [(.false.,i=1,npl)] - if (param%lfragmentation) then - do i = 1, npl - if (mergeadd_list%status(i) == DISRUPTION) then - frag_l_add(i) = .true. - else if (mergeadd_list%status(i) == HIT_AND_RUN) then - frag_l_add(i) = .true. - else if (mergeadd_list%status(i) == SUPERCATASTROPHIC) then - frag_l_add(i) = .true. - else - frag_l_add(i) = .false. - end if - end do - end if - nfrag = count(frag_l_add) - - call discard_plA%alloc(nsppl) - - discard_plA%name(1:nsppl) = pack(symba_plA%name(1:npl), discard_l_pl) - discard_plA%status(1:nsppl) = pack(symba_plA%status(1:npl), discard_l_pl) - discard_plA%mass(1:nsppl) = pack(symba_plA%mass(1:npl), discard_l_pl) - discard_plA%radius(1:nsppl) = pack(symba_plA%radius(1:npl), discard_l_pl) - discard_plA%xh(1:nsppl, 1) = pack(symba_plA%xh(1:npl, 1), discard_l_pl) - discard_plA%xh(1:nsppl, 2) = pack(symba_plA%xh(1:npl, 2), discard_l_pl) - discard_plA%xh(1:nsppl, 3) = pack(symba_plA%xh(1:npl, 3), discard_l_pl) - discard_plA%vh(1:nsppl, 1) = pack(symba_plA%vh(1:npl, 1), discard_l_pl) - discard_plA%vh(1:nsppl, 2) = pack(symba_plA%vh(1:npl, 2), discard_l_pl) - discard_plA%vh(1:nsppl, 3) = pack(symba_plA%vh(1:npl, 3), discard_l_pl) - discard_plA%rhill(1:nsppl) = pack(symba_plA%rhill(1:npl), discard_l_pl) - discard_plA%xb(1:nsppl, 1) = pack(symba_plA%xb(1:npl, 1), discard_l_pl) - discard_plA%xb(1:nsppl, 2) = pack(symba_plA%xb(1:npl, 2), discard_l_pl) - discard_plA%xb(1:nsppl, 3) = pack(symba_plA%xb(1:npl, 3), discard_l_pl) - discard_plA%vb(1:nsppl, 1) = pack(symba_plA%vb(1:npl, 1), discard_l_pl) - discard_plA%vb(1:nsppl, 2) = pack(symba_plA%vb(1:npl, 2), discard_l_pl) - discard_plA%vb(1:nsppl, 3) = pack(symba_plA%vb(1:npl, 3), discard_l_pl) - if (param%lfragmentation .and. (nkpl + nfrag > npl)) then - symba_plA%name(1:nkpl) = pack(symba_plA%name(1:npl), .not. discard_l_pl) - symba_plA%status(1:nkpl) = pack(symba_plA%status(1:npl), .not. discard_l_pl) - symba_plA%mass(1:nkpl) = pack(symba_plA%mass(1:npl), .not. discard_l_pl) - symba_plA%radius(1:nkpl) = pack(symba_plA%radius(1:npl), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 1) = pack(symba_plA%xh(1:npl, 1), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 2) = pack(symba_plA%xh(1:npl, 2), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 3) = pack(symba_plA%xh(1:npl, 3), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 1) = pack(symba_plA%vh(1:npl, 1), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 2) = pack(symba_plA%vh(1:npl, 2), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 3) = pack(symba_plA%vh(1:npl, 3), .not. discard_l_pl) - symba_plA%rhill(1:nkpl) = pack(symba_plA%rhill(1:npl), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 1) = pack(symba_plA%xb(1:npl, 1), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 2) = pack(symba_plA%xb(1:npl, 2), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 3) = pack(symba_plA%xb(1:npl, 3), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 1) = pack(symba_plA%vb(1:npl, 1), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 2) = pack(symba_plA%vb(1:npl, 2), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 3) = pack(symba_plA%vb(1:npl, 3), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 1) = pack(symba_plA%ah(1:npl, 1), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 2) = pack(symba_plA%ah(1:npl, 2), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 3) =pack(symba_plA%ah(1:npl, 3), .not. discard_l_pl) - - call util_resize_pl(symba_plA, nkpl+nfrag, npl) - - npl = nkpl + nfrag - !add fragments - symba_plA%name(nkpl+1:npl) = pack(mergeadd_list%name(1:nmergeadd), frag_l_add) - symba_plA%status(nkpl+1:npl) = [(ACTIVE,i=1,nfrag)]!array of ACTIVE status - symba_plA%mass(nkpl+1:npl) = pack(mergeadd_list%mass(1:nmergeadd), frag_l_add) - symba_plA%radius(nkpl+1:npl) = pack(mergeadd_list%radius(1:nmergeadd), frag_l_add) - symba_plA%xh(1,nkpl+1:npl) = pack(mergeadd_list%xh(1:n, 1mergeadd), frag_l_add) - symba_plA%xh(2,nkpl+1:npl) = pack(mergeadd_list%xh(1:n, 2mergeadd), frag_l_add) - symba_plA%xh(3,nkpl+1:npl) = pack(mergeadd_list%xh(1:n, 3mergeadd), frag_l_add) - symba_plA%vh(1,nkpl+1:npl) = pack(mergeadd_list%vh(1:n, 1mergeadd), frag_l_add) - symba_plA%vh(2,nkpl+1:npl) = pack(mergeadd_list%vh(1:n, 2mergeadd), frag_l_add) - symba_plA%vh(3,nkpl+1:npl) = pack(mergeadd_list%vh(1:n, 3mergeadd), frag_l_add) - - do i = nkpl+1, npl - mu = symba_plA%mass(1) + symba_plA%mass(i) - r = norm2(symba_plA%xh(:,i)) - v2 = dot_product(symba_plA%vh(:,i), symba_plA%vh(:,i)) - energy = 0.5_DP*v2 - mu/r - ap = -0.5_DP*mu/energy - symba_plA%rhill(i) = ap*(((symba_plA%mass(i)/mu)/3.0_DP)**(1.0_DP/3.0_DP)) - end do - - else - symba_plA%name(1:nkpl) = pack(symba_plA%name(1:npl), .not. discard_l_pl) - symba_plA%status(1:nkpl) = pack(symba_plA%status(1:npl), .not. discard_l_pl) - symba_plA%mass(1:nkpl) = pack(symba_plA%mass(1:npl), .not. discard_l_pl) - symba_plA%radius(1:nkpl) = pack(symba_plA%radius(1:npl), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 1) = pack(symba_plA%xh(1:npl, 1), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 2) = pack(symba_plA%xh(1:npl, 2), .not. discard_l_pl) - symba_plA%xh(1:nkpl, 3) = pack(symba_plA%xh(1:npl, 3), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 1) = pack(symba_plA%vh(1:npl, 1), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 2) = pack(symba_plA%vh(1:npl, 2), .not. discard_l_pl) - symba_plA%vh(1:nkpl, 3) = pack(symba_plA%vh(1:npl, 3), .not. discard_l_pl) - symba_plA%rhill(1:nkpl) = pack(symba_plA%rhill(1:npl), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 1) = pack(symba_plA%xb(1:npl, 1), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 2) = pack(symba_plA%xb(1:npl, 2), .not. discard_l_pl) - symba_plA%xb(1:nkpl, 3) = pack(symba_plA%xb(1:npl, 3), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 1) = pack(symba_plA%vb(1:npl, 1), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 2) = pack(symba_plA%vb(1:npl, 2), .not. discard_l_pl) - symba_plA%vb(1:nkpl, 3) = pack(symba_plA%vb(1:npl, 3), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 1) = pack(symba_plA%ah(1:npl, 1), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 2) = pack(symba_plA%ah(1:npl, 2), .not. discard_l_pl) - symba_plA%ah(1:nkpl, 3) = pack(symba_plA%ah(1:npl, 3), .not. discard_l_pl) - npl = nkpl - symba_plA%nbody = npl - end if - end if - - if (ldiscard_tp) then - nktp = 0 - nsptp = 0 - - discard_l_tp(1:ntp) = (symba_tpA%status(1:ntp) /= ACTIVE) - nsptp = count(discard_l_tp) - nktp = ntp - nsptp - - call discard_tpA%alloc(nsptp) - - discard_tpA%name(1:nsptp) = pack(symba_tpA%name(1:ntp), discard_l_tp) - discard_tpA%status(1:nsptp) = pack(symba_tpA%status(1:ntp), discard_l_tp) - discard_tpA%xh(1:nsptp, 1) = pack(symba_tpA%xh(1:ntp, 1), discard_l_tp) - discard_tpA%xh(1:nsptp, 2) = pack(symba_tpA%xh(1:ntp, 2), discard_l_tp) - discard_tpA%xh(1:nsptp, 3) = pack(symba_tpA%xh(1:ntp, 3), discard_l_tp) - discard_tpA%vh(1:nsptp, 1) = pack(symba_tpA%vh(1:ntp, 1), discard_l_tp) - discard_tpA%vh(1:nsptp, 2) = pack(symba_tpA%vh(1:ntp, 2), discard_l_tp) - discard_tpA%vh(1:nsptp, 3) = pack(symba_tpA%vh(1:ntp, 3), discard_l_tp) - discard_tpA%isperi(1:nsptp) = pack(symba_tpA%isperi(1:ntp), discard_l_tp) - discard_tpA%peri(1:nsptp) = pack(symba_tpA%peri(1:ntp), discard_l_tp) - discard_tpA%atp(1:nsptp) = pack(symba_tpA%atp(1:ntp), discard_l_tp) - discard_tpA%xb(1:nsptp, 1) = pack(symba_tpA%xb(1:ntp, 1), discard_l_tp) - discard_tpA%xb(1:nsptp, 2) = pack(symba_tpA%xb(1:ntp, 2), discard_l_tp) - discard_tpA%xb(1:nsptp, 3) = pack(symba_tpA%xb(1:ntp, 3), discard_l_tp) - discard_tpA%vb(1:nsptp, 1) = pack(symba_tpA%vb(1:ntp, 1), discard_l_tp) - discard_tpA%vb(1:nsptp, 2) = pack(symba_tpA%vb(1:ntp, 2), discard_l_tp) - discard_tpA%vb(1:nsptp, 3) = pack(symba_tpA%vb(1:ntp, 3), discard_l_tp) - - symba_tpA%name(1:nktp) = pack(symba_tpA%name(1:ntp), .not. discard_l_tp) - symba_tpA%status(1:nktp) = pack(symba_tpA%status(1:ntp), .not. discard_l_tp) - symba_tpA%xh(1:nktp, 1) = pack(symba_tpA%xh(1:ntp, 1), .not. discard_l_tp) - symba_tpA%xh(1:nktp, 2) = pack(symba_tpA%xh(1:ntp, 2), .not. discard_l_tp) - symba_tpA%xh(1:nktp, 3) = pack(symba_tpA%xh(1:ntp, 3), .not. discard_l_tp) - symba_tpA%vh(1:nktp, 1) = pack(symba_tpA%vh(1:ntp, 1), .not. discard_l_tp) - symba_tpA%vh(1:nktp, 2) = pack(symba_tpA%vh(1:ntp, 2), .not. discard_l_tp) - symba_tpA%vh(1:nktp, 3) = pack(symba_tpA%vh(1:ntp, 3), .not. discard_l_tp) - symba_tpA%xb(1:nktp, 1) = pack(symba_tpA%xb(1:ntp, 1), .not. discard_l_tp) - symba_tpA%xb(1:nktp, 2) = pack(symba_tpA%xb(1:ntp, 2), .not. discard_l_tp) - symba_tpA%xb(1:nktp, 3) = pack(symba_tpA%xb(1:ntp, 3), .not. discard_l_tp) - symba_tpA%vb(1:nktp, 1) = pack(symba_tpA%vb(1:ntp, 1), .not. discard_l_tp) - symba_tpA%vb(1:nktp, 2) = pack(symba_tpA%vb(1:ntp, 2), .not. discard_l_tp) - symba_tpA%vb(1:nktp, 3) = pack(symba_tpA%vb(1:ntp, 3), .not. discard_l_tp) - symba_tpA%isperi(1:nktp) = pack(symba_tpA%isperi(1:ntp), .not. discard_l_tp) - symba_tpA%peri(1:nktp) = pack(symba_tpA%peri(1:ntp), .not. discard_l_tp) - symba_tpA%atp(1:nktp) = pack(symba_tpA%atp(1:ntp), .not. discard_l_tp) - symba_tpA%ah(1:nktp, 1) = pack(symba_tpA%ah(1:ntp, 1), .not. discard_l_tp) - symba_tpA%ah(1:nktp, 2) = pack(symba_tpA%ah(1:ntp, 2), .not. discard_l_tp) - symba_tpA%ah(1:nktp, 3) = pack(symba_tpA%ah(1:ntp, 3), .not. discard_l_tp) - ntp = nktp - symba_tpA%nbody = ntp - end if - - end procedure symba_rearray -end submodule s_symba_rearray diff --git a/src/symba/symba_reorder_pl.f90 b/src/symba/symba_reorder_pl.f90 deleted file mode 100644 index ac142bd7f..000000000 --- a/src/symba/symba_reorder_pl.f90 +++ /dev/null @@ -1,67 +0,0 @@ -submodule (symba) s_symba_reorder_pl -contains - module procedure symba_reorder_pl - !! author: David A. Minton - !! - !! Rearrange SyMBA planet arrays in order of decreasing mass - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_reorder_pl.f90 - use swiftest - implicit none - integer(I4B) :: i - integer(I4B), dimension(:), allocatable :: index - real(DP), dimension(:), allocatable :: mass - real(DP), dimension(:,:), allocatable :: symba_plwkspa - integer(I4B), dimension(:,:), allocatable :: symba_plwkspa_id_status - -! executable code - allocate(index(npl), mass(npl)) - allocate(symba_plwkspa(12,npl)) - allocate(symba_plwkspa_id_status(2,npl)) - - do i = 1, npl - mass(i) = symba_plA%mass(i) - symba_plwkspa_id_status(1,i) = symba_plA%name(i) - symba_plwkspa_id_status(2,i) = symba_plA%status(i) - symba_plwkspa(1,i) = symba_plA%mass(i) - symba_plwkspa(2,i) = symba_plA%radius(i) - symba_plwkspa(3,i) = symba_plA%xh(1,i) - symba_plwkspa(4,i) = symba_plA%xh(2,i) - symba_plwkspa(5,i) = symba_plA%xh(3,i) - symba_plwkspa(6,i) = symba_plA%vh(1,i) - symba_plwkspa(7,i) = symba_plA%vh(2,i) - symba_plwkspa(8,i) = symba_plA%vh(3,i) - symba_plwkspa(9,i) = symba_plA%rhill(i) - symba_plwkspa(10,i) = symba_plA%ah(1,i) - symba_plwkspa(11,i) = symba_plA%ah(2,i) - symba_plwkspa(12,i) = symba_plA%ah(3,i) - end do - call util_index(mass, index) - write(*,*) "************ Reorder ***************" - do i = 1, npl - symba_plA%name(i) = symba_plwkspa_id_status(1,index(npl-i+1)) - symba_plA%status(i) = symba_plwkspa_id_status(2,index(npl-i+1)) - symba_plA%mass(i) = symba_plwkspa(1,index(npl-i+1)) - symba_plA%radius(i) = symba_plwkspa(2,index(npl-i+1)) - symba_plA%xh(1,i) = symba_plwkspa(3,index(npl-i+1)) - symba_plA%xh(2,i) = symba_plwkspa(4,index(npl-i+1)) - symba_plA%xh(3,i) = symba_plwkspa(5,index(npl-i+1)) - symba_plA%vh(1,i) = symba_plwkspa(6,index(npl-i+1)) - symba_plA%vh(2,i) = symba_plwkspa(7,index(npl-i+1)) - symba_plA%vh(3,i) = symba_plwkspa(8,index(npl-i+1)) - symba_plA%rhill(i) = symba_plwkspa(9,index(npl-i+1)) - symba_plA%ah(1,i) = symba_plwkspa(10,index(npl-i+1)) - symba_plA%ah(2,i) = symba_plwkspa(11,index(npl-i+1)) - symba_plA%ah(3,i) = symba_plwkspa(12,index(npl-i+1)) - - - end do - if (allocated(symba_plwkspa)) deallocate(symba_plwkspa) - if (allocated(symba_plwkspa_id_status)) deallocate(symba_plwkspa_id_status) - if (allocated(mass)) deallocate(mass) - if (allocated(index)) deallocate(index) - - return - - end procedure symba_reorder_pl -end submodule s_symba_reorder_pl diff --git a/src/symba/symba_set_initial_conditions.f90 b/src/symba/symba_set_initial_conditions.f90 deleted file mode 100644 index 49a58aad5..000000000 --- a/src/symba/symba_set_initial_conditions.f90 +++ /dev/null @@ -1,36 +0,0 @@ -submodule (symba) s_symba_set_initial_conditions -contains - module procedure symba_set_initial_conditions - !! author: David A. Minton - !! - !! Sets up initial conditions for a run. Currently, it reads in all the ICs from input files, but future versions could also - !! initialize them in some other way - use swiftest - implicit none - - ! read in the total number of bodies from the input files - call symba_plA%read_from_file(param) - call symba_tpA%read_from_file(param) - - ! Save central body mass in vector form so that elemental functions can be evaluated with it - call symba_tpA%set_vec(symba_plA%mass(1),param%dt) - call symba_plA%set_vec(symba_plA%mass(1),param%dt) - - ! Save system mass to both objects - call symba_plA%set_msys(symba_plA) - call symba_tpA%set_msys(symba_plA) - - ! create arrays of data structures big enough to store the number of bodies we are adding - call mergeadd_list%alloc(10*npl)!DM: Why 10*npl? - call mergesub_list%alloc(npl) - call plplenc_list%alloc(10*npl)!DM: See ^ - call pltpenc_list%alloc(ntp)!DM: See ^ - - ! reads in initial conditions of all massive bodies from input file - ! reorder by mass - call symba_plA%reorder() - call util_valid(symba_plA, symba_tpA) - - return - end procedure symba_set_initial_conditions -end submodule s_symba_set_initial_conditions diff --git a/src/symba/symba_spill_pl.f90 b/src/symba/symba_spill_pl.f90 deleted file mode 100644 index f92d4f51d..000000000 --- a/src/symba/symba_spill_pl.f90 +++ /dev/null @@ -1,46 +0,0 @@ -submodule (symba) s_symba_spill_pl -contains - module procedure symba_spill_pl - !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott - !! - !! Move spilled (discarded) symba massive body structure from active list to discard list - use swiftest - integer(I4B) :: i,nspill, npl - - npl = self%nbody - nspill = self%nspill - if (.not. self%lspill) then - call discard%alloc(nspill) ! Create the discard object for this type - self%lspill = .true. - end if - - ! Pack the discarded bodies into the discard object - discard%lmerged(:) = pack(self%lmerged(1:npl), self%lspill_list(1:npl)) - discard%nplenc(:) = pack(self%nplenc(1:npl), self%lspill_list(1:npl)) - discard%nchild(:) = pack(self%nchild(1:npl), self%lspill_list(1:npl)) - discard%index_parent(:) = pack(self%index_parent(1:npl), self%lspill_list(1:npl)) - - ! Pack the kept bodies back into the original object - self%lmerged(:)= pack(self%lmerged(1:npl), .not. self%lspill_list(1:npl)) - self%nplenc(:) = pack(self%nplenc(1:npl), .not. self%lspill_list(1:npl)) - self%nchild(:)= pack(self%nchild(1:npl), .not. self%lspill_list(1:npl)) - self%index_parent(:)= pack(self%index_parent(1:npl), .not. self%lspill_list(1:npl)) - - do concurrent (i = 1:NDIM) - discard%index_child(:, i) = pack(self%index_child(1:npl, i), self%lspill_list(1:npl)) - self%index_child(:, i)= pack(self%index_child(1:npl, i), .not. self%lspill_list(1:npl)) - end do - - ! Call the spill method for the parent class - call symba_spill_tp(self,discard) - - return - - end procedure symba_spill_pl -end submodule s_symba_spill_pl - - - - - - diff --git a/src/symba/symba_spill_tp.f90 b/src/symba/symba_spill_tp.f90 deleted file mode 100644 index cc3299908..000000000 --- a/src/symba/symba_spill_tp.f90 +++ /dev/null @@ -1,33 +0,0 @@ -submodule (symba) s_symba_spill_tp -contains - module procedure symba_spill_tp - !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott - !! - !! Move spilled (discarded) symba test particle structure from active list to discard list - use swiftest - integer(I4B) :: nspill, ntp - - ntp = self%nbody - nspill = self%nspill - if (.not. self%lspill) then - call discard%alloc(nspill) ! Create the discard object for this type - self%lspill = .true. - end if - - ! Pack the discarded bodies into the discard object - discard%nplenc(:) = pack(self%nplenc(1:ntp), self%lspill_list(1:ntp)) - discard%levelg(:) = pack(self%levelg(1:ntp), self%lspill_list(1:ntp)) - discard%levelm(:) = pack(self%levelm(1:ntp), self%lspill_list(1:ntp)) - - ! Pack the kept bodies back into the original object - self%nplenc(:) = pack(self%nplenc(1:ntp), .not. self%lspill_list(1:ntp)) - self%levelg(:)= pack(self%levelg(1:ntp), .not. self%lspill_list(1:ntp)) - self%levelm(:)= pack(self%levelm(1:ntp), .not. self%lspill_list(1:ntp)) - - ! Call the spill method for the parent class - call helio_spill_pl(self,discard) - - return - - end procedure symba_spill_tp -end submodule s_symba_spill_tp diff --git a/src/symba/symba_step_eucl.f90 b/src/symba/symba_step_eucl.f90 deleted file mode 100644 index a5075a415..000000000 --- a/src/symba/symba_step_eucl.f90 +++ /dev/null @@ -1,156 +0,0 @@ -submodule (symba) s_symba_step_eucl -contains - module procedure symba_step_eucl - !! author: Jacob R. Elliott - !! - !! Step planets and active test particles ahead in democratic heliocentric coordinates, descending the recursive - !! branch if necessary to handle possible close encounters. - !! Uses the single-loop blocking to evaluate the Euclidean distance matri - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step.f90 - !! Adapted from Hal Levison's Swift routine symba5_step_pl.f -use swiftest -implicit none - logical :: lencounter, lvdotr - integer(I4B) :: i, j, irec, nplm, k, counter - integer(I4B), allocatable :: plpl_encounters_indices(:), pltp_encounters_indices(:) - real(DP), dimension(NDIM) :: xr, vr - - integer(I4B), allocatable, dimension(:) :: pltp_encounters, pltp_lvdotr - integer(I4B), allocatable, dimension(:) :: plpl_encounters, plpl_lvdotr - -! executable code - - ! initialize massive bodies - symba_plA%nplenc(1:npl) = 0 ! number of massive body encounters this particular massive body has - symba_plA%ntpenc(1:npl) = 0 ! number of test particle encounters this particle massive body has - symba_plA%levelg(1:npl) = -1 ! - symba_plA%levelm(1:npl) = -1 ! - symba_plA%index_parent(1:npl) = (/ (i, i=1,npl)/) - symba_plA%index_child(:, 1:npl) = 0 - - ! initialize test particles - symba_tpA%nplenc(1:ntp) = 0 - symba_tpA%levelg(1:ntp) = -1 - symba_tpA%levelm(1:ntp) = -1 - - nplplenc = 0 ! number of encounters in the entire run - npltpenc = 0 - -! all this needs to be changed to the tree search function for encounters - allocate(plpl_encounters(num_plpl_comparisons)) - allocate(plpl_lvdotr(num_plpl_comparisons)) - plpl_encounters = 0 - plpl_lvdotr = 0 - - ! call util_dist_eucl_plpl(npl,symba_plA%xh, num_plpl_comparisons, k_plpl, dist_plpl_array) - ! call util_dist_eucl_plpl(npl,symba_plA%vh, num_plpl_comparisons, k_plpl, vel_plpl_array) - call symba_chk_eucl(num_plpl_comparisons, k_plpl, symba_plA, dt, plpl_encounters, plpl_lvdotr, nplplenc) - - ! here i'll order the encounters - ! nplplenc = count(plpl_encounters > 0) - ! print *,'step nplplenc: ',nplplenc - if(nplplenc>0)then - - allocate(plpl_encounters_indices(nplplenc)) - - ! plpl_encounters_indices = pack(plpl_encounters,plpl_encounters > 0) - ! so it turns out this is significantly faster than the pack command - counter = 1 - do k = 1,num_plpl_comparisons - if(plpl_encounters(k).gt.0)then - plpl_encounters_indices(counter) = k - counter = counter + 1 - endif - enddo - - symba_plA%lmerged(k_plpl(1,plpl_encounters_indices)) = .false. ! they have not merged yet - symba_plA%nplenc(k_plpl(1,plpl_encounters_indices)) = symba_plA%nplenc(k_plpl(1,plpl_encounters_indices)) + 1 ! number of particles that massive body "i" has close encountered - symba_plA%levelg(k_plpl(1,plpl_encounters_indices)) = 0 ! recursion level - symba_plA%levelm(k_plpl(1,plpl_encounters_indices)) = 0 ! recursion level - symba_plA%nchild(k_plpl(1,plpl_encounters_indices)) = 0 - ! for the j particle - symba_plA%lmerged(k_plpl(2,plpl_encounters_indices)) = .false. - symba_plA%nplenc(k_plpl(2,plpl_encounters_indices)) = symba_plA%nplenc(k_plpl(2,plpl_encounters_indices)) + 1 - symba_plA%levelg(k_plpl(2,plpl_encounters_indices)) = 0 - symba_plA%levelm(k_plpl(2,plpl_encounters_indices)) = 0 - symba_plA%nchild(k_plpl(2,plpl_encounters_indices)) = 0 - - plplenc_list%status(1:nplplenc) = ACTIVE ! you are in an encounter - plplenc_list%lvdotr(1:nplplenc) = plpl_lvdotr(plpl_encounters_indices)! flag of relative accelerations to say if there will be a close encounter in next timestep - plplenc_list%level(1:nplplenc) = 0 ! recursion level - plplenc_list%index1(1:nplplenc) = k_plpl(1,plpl_encounters_indices) ! index of first massive body in encounter - plplenc_list%index2(1:nplplenc) = k_plpl(2,plpl_encounters_indices) ! index of second massive body in encounter - deallocate(plpl_encounters_indices) - endif - - deallocate(plpl_encounters, plpl_lvdotr) - - if(ntp>0)then - allocate(pltp_encounters(num_pltp_comparisons)) - allocate(pltp_lvdotr(num_pltp_comparisons)) - - - pltp_encounters = 0 - pltp_lvdotr = 0 - - ! call util_dist_eucl_pltp(npl, ntp, symba_plA%xh, symba_tpA%xh, & - ! num_pltp_comparisons, k_pltp, dist_pltp_array) - ! call util_dist_eucl_pltp(npl, ntp, symba_plA%vh, symba_tpA%vh, & - ! num_pltp_comparisons, k_pltp, vel_pltp_array) - call symba_chk_eucl_pltp(num_pltp_comparisons, k_pltp, symba_plA, symba_tpA, dt, pltp_encounters, pltp_lvdotr, npltpenc) - - ! npltpenc = count(pltp_encounters > 0) - ! print *,'step npltpenc: ',npltpenc - if(npltpenc>0)then - - allocate(pltp_encounters_indices(npltpenc)) - - counter = 1 - do k = 1,num_pltp_comparisons - if(pltp_encounters(k).gt.0)then - pltp_encounters_indices(counter) = k - counter = counter + 1 - endif - enddo - - symba_plA%ntpenc(k_pltp(1,pltp_encounters_indices)) = symba_plA%ntpenc(k_pltp(1,pltp_encounters_indices)) + 1 - symba_plA%levelg(k_pltp(1,pltp_encounters_indices)) = 0 - symba_plA%levelm(k_pltp(1,pltp_encounters_indices)) = 0 - - symba_tpA%nplenc(k_pltp(2,pltp_encounters_indices)) = symba_tpA%nplenc(k_pltp(2,pltp_encounters_indices)) + 1 - symba_tpA%levelg(k_pltp(2,pltp_encounters_indices)) = 0 - symba_tpA%levelm(k_pltp(2,pltp_encounters_indices)) = 0 - - pltpenc_list%status(1:npltpenc) = ACTIVE - pltpenc_list%lvdotr(1:npltpenc) = pltp_lvdotr(pltp_encounters_indices) - pltpenc_list%level(1:npltpenc) = 0 - pltpenc_list%indexpl(1:npltpenc) = k_pltp(1,pltp_encounters_indices) - pltpenc_list%indextp(1:npltpenc) = k_pltp(1,pltp_encounters_indices) - - deallocate(pltp_encounters_indices) - endif - - deallocate(pltp_encounters, pltp_lvdotr) - endif - -! end of things that need to be changed in the tree - - nplm = count(symba_plA%mass > mtiny) - ! flag to see if there was an encounter - lencounter = ((nplplenc > 0) .or. (npltpenc > 0)) - - if (lencounter) then ! if there was an encounter, we need to enter symba_step_interp to see if we need recursion - call symba_step_interp_eucl(lextra_force, lclose, t, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, param%j2rp2, param%j4rp4,& - dt, eoffset, mtiny, nplplenc, npltpenc, plplenc_list, pltpenc_list, nmergeadd, nmergesub, mergeadd_list,& - mergesub_list, encounter_file, out_type, num_plpl_comparisons, k_plpl, num_pltp_comparisons, k_pltp) - lfirst = .true. - else ! otherwise we can just advance the particles - call symba_step_helio(lfirst, lextra_force, t, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, & - param%j2rp2, param%j4rp4, dt) - end if - - return - - end procedure symba_step_eucl -end submodule s_symba_step_eucl diff --git a/src/symba/symba_step_helio.f90 b/src/symba/symba_step_helio.f90 deleted file mode 100644 index 3d3284c0a..000000000 --- a/src/symba/symba_step_helio.f90 +++ /dev/null @@ -1,24 +0,0 @@ -submodule (symba) s_symba_step_helio -contains - module procedure symba_step_helio - !! author: David A. Minton - !! - !! Step planets and test particles ahead in democratic heliocentric coordinates - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step_helio.f90 - use swiftest - implicit none - logical :: lfirsttp - real(DP), dimension(NDIM) :: ptbeg, ptend - real(DP), dimension(npl, NDIMm) :: xbeg, xend - -! executable code - lfirsttp = lfirst - call symba_step_helio_pl(lfirst, lextra_force, t, npl, nplm, param%nplmax, helio_plA, param%j2rp2, param%j4rp4, dt, xbeg, xend, ptbeg, ptend) - if (ntp > 0) call helio_step_tp(lfirsttp, lextra_force, t, nplm, param%nplmax, ntp, param%ntpmax, helio_plA, helio_tpA, param%j2rp2, param%j4rp4, & - dt, xbeg, xend, ptbeg, ptend) - - return - - end procedure symba_step_helio -end submodule s_symba_step_helio diff --git a/src/symba/symba_step_helio_pl.f90 b/src/symba/symba_step_helio_pl.f90 deleted file mode 100644 index bcf2cfc40..000000000 --- a/src/symba/symba_step_helio_pl.f90 +++ /dev/null @@ -1,52 +0,0 @@ -submodule (symba) s_symba_step_helio_pl -contains - module procedure symba_step_helio_pl - !! author: David A. Minton - !! - !! Step planets ahead in democratic heliocentric coordinates - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step_helio_pl.f90 - !! Adapted from Hal Levison's Swift routines symba5_step_helio.f and helio_step_pl.f -use swiftest -implicit none - logical :: lflag - integer(I4B) :: i - real(DP) :: dth, msys - -! executable code - - - dth = 0.5_DP*dt - lflag = lfirst - if (lfirst) then - call coord_vh2vb(npl, helio_plA%swiftest, msys) - lfirst = .false. - end if - - call helio_lindrift(npl, helio_plA%swiftest, dth, ptbeg) - - call symba_helio_getacch(lflag, lextra_force, t, npl, nplm, param%nplmax, helio_plA, param%j2rp2, param%j4rp4) - lflag = .true. - - call helio_kickvb(npl, helio_plA, dth) - - do i = 2, nplm - xbeg(:, i) = helio_plA%swiftest%xh(:,i) - end do - call helio_drift(npl, helio_plA%swiftest, dt) - - do i = 2, nplm - xend(:, i) = helio_plA%swiftest%xh(:,i) - end do - call symba_helio_getacch(lflag, lextra_force, t+dt, npl, nplm, param%nplmax, helio_plA, param%j2rp2, param%j4rp4) - - call helio_kickvb(npl, helio_plA, dth) - - call helio_lindrift(npl, helio_plA%swiftest, dth, ptend) - - call coord_vb2vh(npl, helio_plA%swiftest) - - return - - end procedure symba_step_helio_pl -end submodule s_symba_step_helio_pl diff --git a/src/symba/symba_step_interp.f90 b/src/symba/symba_step_interp.f90 deleted file mode 100644 index 7ec056ec8..000000000 --- a/src/symba/symba_step_interp.f90 +++ /dev/null @@ -1,72 +0,0 @@ -submodule (symba) s_symba_step_interp -contains - module procedure symba_step_interp - !! author: David A. Minton - !! - !! Step planets and active test particles ahead in democratic heliocentric coordinates, calling the recursive - !! subroutine to descend to the appropriate level to handle close encounters - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step_interp.f90 - !! Adapted from Hal Levison's Swift routine symba5_step_interp.f - use swiftest - implicit none - logical , save :: lmalloc = .true. - integer( I4B) :: i, irec - real(DP) :: dth, msys - real(DP), dimension(NDIM) :: ptbeg, ptend - real(DP), dimension(:, :), allocatable, save :: xbeg, xend - -! executable code - - if (lmalloc) then - allocate(xbeg(NDIM, param%nplmax), xend(NDIM, param%nplmax)) - lmalloc = .false. - end if - dth = 0.5_DP*dt - - call coord_vh2vb(npl, symba_plA, msys) - - call helio_lindrift(npl, symba_plA, dth, ptbeg) - if (ntp > 0) then - call coord_vh2vb_tp(ntp, symba_tpA, -ptbeg) - call helio_lindrift_tp(ntp, symba_tpA, dth, ptbeg) - do i = 2, npl - xbeg(:, i) = symba_plA%xh(:,i) - end do - end if - - call symba_getacch(lextra_force, t, npl, nplm, symba_plA, param%j2rp2, param%j4rp4, nplplenc, plplenc_list) - if (ntp > 0) call symba_getacch_tp(lextra_force, t, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, xbeg, param%j2rp2, & - param%j4rp4, npltpenc, pltpenc_list) - - call helio_kickvb(npl, symba_plA, dth) - if (ntp > 0) call helio_kickvb_tp(ntp, symba_tpA, dth) - irec = -1 - - call symba_helio_drift(irec, npl, symba_plA, dt) - if (ntp > 0) call symba_helio_drift_tp(irec, ntp, symba_tpA, symba_plA%mass(1), dt) - irec = 0 - - call symba_step_recur(lclose, t, irec, npl, nplm, ntp, symba_plA, symba_tpA, dt, eoffset, nplplenc, npltpenc, & - plplenc_list, pltpenc_list, nmergeadd, nmergesub, mergeadd_list, mergesub_list, encounter_file, out_type, & - param%nplmax, param%ntpmax, fragmax, param) - if (ntp > 0) then - do i = 2, npl - xend(:, i) = symba_plA%xh(:,i) - end do - end if - call symba_getacch(lextra_force, t+dt, npl, nplm, symba_plA, param%j2rp2, param%j4rp4, nplplenc, plplenc_list) - if (ntp > 0) call symba_getacch_tp(lextra_force, t+dt, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, xend, param%j2rp2, & - param%j4rp4, npltpenc, pltpenc_list) - call helio_kickvb(npl, symba_plA, dth) - if (ntp > 0) call helio_kickvb_tp(ntp, symba_tpA, dth) - call coord_vb2vh(npl, symba_plA) - call helio_lindrift(npl, symba_plA, dth, ptend) - if (ntp > 0) then - call coord_vb2vh_tp(ntp, symba_tpA, -ptend) - call helio_lindrift_tp(ntp, symba_tpA, dth, ptend) - end if - return - - end procedure symba_step_interp -end submodule s_symba_step_interp diff --git a/src/symba/symba_step_interp_eucl.f90 b/src/symba/symba_step_interp_eucl.f90 deleted file mode 100644 index 2036ae9aa..000000000 --- a/src/symba/symba_step_interp_eucl.f90 +++ /dev/null @@ -1,73 +0,0 @@ -submodule (symba) s_symba_step_interp_eucl -contains - module procedure symba_step_interp_eucl - !! author: Jacob R. Elliott - !! - !! Same as symba_step_interp, but with th new single loop-blocking Euclidean distance matrix evaluation - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step_interp.f90 - !! Adapted from Hal Levison's Swift routine symba5_step_interp.f - use swiftest - implicit none - logical , save :: lmalloc = .true. - integer(I4B) :: i, irec - real(DP) :: dth, msys - real(DP), dimension(NDIM) :: ptbeg, ptend - real(DP), dimension(:, :), allocatable, save :: xbeg, xend - -! executable code - - if (lmalloc) then - allocate(xbeg(NDIM, param%nplmax), xend(NDIM, param%nplmax)) - lmalloc = .false. - end if - dth = 0.5_DP*dt - - call coord_vh2vb(npl, symba_plA, msys) - - call helio_lindrift(npl, symba_plA, dth, ptbeg) - if (ntp > 0) then - call coord_vh2vb_tp(ntp, symba_tpA, -ptbeg) - call helio_lindrift_tp(ntp, symba_tpA, dth, ptbeg) - do i = 2, npl - xbeg(:, i) = symba_plA%xh(:,i) - end do - end if - - call symba_getacch_eucl(lextra_force, t, npl, nplm, param%nplmax, symba_plA, param%j2rp2, param%j4rp4, nplplenc, plplenc_list, & - num_plpl_comparisons, k_plpl) - if (ntp > 0) call symba_getacch_tp_eucl(lextra_force, t, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, xbeg, param%j2rp2,& - param%j4rp4, npltpenc, pltpenc_list, num_pltp_comparisons, k_pltp) - - call helio_kickvb(npl, symba_plA, dth) - if (ntp > 0) call helio_kickvb_tp(ntp, symba_tpA, dth) - irec = -1 - - call symba_helio_drift(irec, npl, symba_plA, dt) - if (ntp > 0) call symba_helio_drift_tp(irec, ntp, symba_tpA, symba_plA%mass(1), dt) - irec = 0 - - call symba_step_recur(lclose, t, irec, npl, nplm, ntp, symba_plA, symba_tpA, dt, eoffset, nplplenc, npltpenc,& - plplenc_list, pltpenc_list, nmergeadd, nmergesub, mergeadd_list, mergesub_list, encounter_file, out_type) - if (ntp > 0) then - do i = 2, npl - xend(:, i) = symba_plA%xh(:,i) - end do - end if - call symba_getacch_eucl(lextra_force, t+dt, npl, nplm, param%nplmax, symba_plA, param%j2rp2, param%j4rp4, nplplenc, plplenc_list, & - num_plpl_comparisons, k_plpl) - if (ntp > 0) call symba_getacch_tp_eucl(lextra_force, t+dt, npl, nplm, param%nplmax, ntp, param%ntpmax, symba_plA, symba_tpA, xend, & - param%j2rp2,param%j4rp4, npltpenc, pltpenc_list, num_pltp_comparisons, k_pltp) - call helio_kickvb(npl, symba_plA, dth) - if (ntp > 0) call helio_kickvb_tp(ntp, symba_tpA, dth) - call coord_vb2vh(npl, symba_plA) - call helio_lindrift(npl, symba_plA, dth, ptend) - if (ntp > 0) then - call coord_vb2vh_tp(ntp, symba_tpA, -ptend) - call helio_lindrift_tp(ntp, symba_tpA, dth, ptend) - end if - - return - - end procedure symba_step_interp_eucl -end submodule s_symba_step_interp_eucl diff --git a/src/symba/symba_step_recur.f90 b/src/symba/symba_step_recur.f90 deleted file mode 100644 index b380a75c8..000000000 --- a/src/symba/symba_step_recur.f90 +++ /dev/null @@ -1,226 +0,0 @@ -submodule (symba) s_symba_step_recur -contains - module procedure symba_step_recur - !! author: David A. Minton - !! - !! Step interacting planets and active test particles ahead in democratic heliocentric coordinates at the current - !! recursion level, if applicable, and descend to the next deeper level if necessary - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_step_recur.f90 - !! Adapted from Hal Levison's Swift routine symba5_step_recur.F -use swiftest -implicit none - logical :: lencounter - integer(I4B) :: i, j, irecp, icflg, index_i, index_j, index_pl, index_tp - real(DP) :: dtl, dth, sgn - real(DP), dimension(NDIM) :: xr, vr, vbs - -! executable code - dtl = dt0/(ntenc**ireci) - dth = 0.5_DP*dtl - if (dtl/dt0 < VSMALL) then - write(*, *) "swiftest warning:" - write(*, *) " in symba_step_recur, local time step is too small" - write(*, *) " roundoff error will be important!" - call util_exit(FAILURE) - end if - irecp = ireci + 1 - - if (ireci == 0) then - icflg = 0 - do i = 1, nplplenc - if ((plplenc_list%status(i) == ACTIVE) .and. (plplenc_list%level(i) == ireci)) then - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - xr(:) = symba_plA%xh(:,index_j) - symba_plA%xh(:,index_i) - vr(:) = symba_plA%vb(:,index_j) - symba_plA%vb(:,index_i) - call symba_chk(xr(:), vr(:), symba_plA%rhill(index_i), & - symba_plA%rhill(index_j), dtl, irecp, lencounter, & - plplenc_list%lvdotr(i)) - if (lencounter) then - icflg = 1 - symba_plA%levelg(index_i) = irecp - symba_plA%levelm(index_i) = max(irecp, symba_plA%levelm(index_i)) - symba_plA%levelg(index_j) = irecp - symba_plA%levelm(index_j) = max(irecp, symba_plA%levelm(index_j)) - plplenc_list%level(i) = irecp - end if - end if - end do - do i = 1, npltpenc - if ((pltpenc_list%status(i) == ACTIVE) .and. (pltpenc_list%level(i) == ireci)) then - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - - xr(:) = symba_tpA%xh(:,index_tp) - symba_plA%xh(:,index_pl) - vr(:) = symba_tpA%vb(:,index_tp) - symba_plA%vb(:,index_pl) - call symba_chk(xr(:), vr(:), symba_plA%rhill(index_pl), 0.0_DP, & - dtl, irecp, lencounter, pltpenc_list%lvdotr(i)) - if (lencounter) then - icflg = 1 - symba_plA%levelg(index_pl) = irecp - symba_plA%levelm(index_pl) = max(irecp, symba_plA%levelm(index_pl)) - symba_tpA%levelg(index_tp) = irecp - symba_tpA%levelm(index_tp) = max(irecp, symba_tpA%levelm(index_tp)) - pltpenc_list%level(i) = irecp - end if - end if - end do - lencounter = (icflg == 1) - sgn = 1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - call symba_helio_drift(ireci, npl, symba_plA, dtl) - if (ntp > 0) call symba_helio_drift_tp(ireci, ntp, symba_tpA, symba_plA%mass(1), dtl) - if (lencounter) call symba_step_recur(lclose, t, irecp, npl, nplm, ntp, symba_plA, symba_tpA, dt0, eoffset, nplplenc, & - npltpenc, plplenc_list, pltpenc_list, nmergeadd, nmergesub, mergeadd_list, mergesub_list, encounter_file, out_type, & - param%nplmax, param%ntpmax, fragmax, param) - sgn = 1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - if (lclose) then - vbs(:) = symba_plA%vb(:,1) - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if (((plplenc_list%status(i) == ACTIVE) .and. & - (symba_plA%levelg(index_i) >= ireci) .and. & - (symba_plA%levelg(index_j) >= ireci))) then - ! create if statement to check for collisions (ls12) or merger depending on flag lfrag in param.in - ! determines collisional regime if lfrag=.true. for close encounter massive bodies - ! call symba_frag_pl(...) - ! determines if close encounter leads to merger if lfrag=.false. - if (param%lfragmentation) then - call symba_fragmentation (t, dtl, i, nmergeadd, nmergesub, mergeadd_list, mergesub_list, & - eoffset, vbs, encounter_file, out_type, npl, symba_plA, nplplenc, plplenc_list, param%nplmax, & - param%ntpmax, fragmax) - else - call symba_merge_pl(t, dtl, i, nplplenc, plplenc_list, nmergeadd, nmergesub, mergeadd_list, & - mergesub_list, eoffset, vbs, encounter_file, out_type, npl, symba_plA) - end if - end if - end do - do i = 1, npltpenc - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if ((pltpenc_list%status(i) == ACTIVE) .and. & - (symba_plA%levelg(index_pl) >= ireci) .and. & - (symba_tpA%levelg(index_tp) >= ireci)) then - call symba_merge_tp(t, dtl, i, pltpenc_list, vbs, encounter_file, out_type, symba_plA, symba_tpA) !check later - end if - end do - end if - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if (symba_plA%levelg(index_i) == irecp) symba_plA%levelg(index_i) = ireci - if (symba_plA%levelg(index_j) == irecp) symba_plA%levelg(index_j) = ireci - if (plplenc_list%level(i) == irecp) plplenc_list%level(i) = ireci - end do - do i = 1, npltpenc - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if (symba_plA%levelg(index_pl) == irecp) symba_plA%levelg(index_pl) = ireci - if (symba_tpA%levelg(index_tp) == irecp) symba_tpA%levelg(index_tp) = ireci - if (pltpenc_list%level(i) == irecp) pltpenc_list%level(i) = ireci - end do - else - do j = 1, ntenc - icflg = 0 - do i = 1, nplplenc - if ((plplenc_list%status(i) == ACTIVE) .and. (plplenc_list%level(i) == ireci)) then - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - xr(:) = symba_plA%xh(:,index_j) - symba_plA%xh(:,index_i) - vr(:) = symba_plA%vb(:,index_j) - symba_plA%vb(:,index_i) - call symba_chk(xr(:), vr(:), symba_plA%rhill(index_i), & - symba_plA%rhill(index_j), dtl, irecp, lencounter, & - plplenc_list%lvdotr(i)) - if (lencounter) then - icflg = 1 - symba_plA%levelg(index_i) = irecp - symba_plA%levelm(index_i) = max(irecp, symba_plA%levelm(index_i)) - symba_plA%levelg(index_j) = irecp - symba_plA%levelm(index_j) = max(irecp, symba_plA%levelm(index_j)) - plplenc_list%level(i) = irecp - end if - end if - end do - do i = 1, npltpenc - if ((pltpenc_list%status(i) == ACTIVE) .and. (pltpenc_list%level(i) == ireci)) then - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - xr(:) = symba_tpA%xh(:,index_tp) - symba_plA%xh(:,index_pl) - vr(:) = symba_tpA%vb(:,index_tp) - symba_plA%vb(:,index_pl) - call symba_chk(xr(:), vr(:), symba_plA%rhill(index_pl), 0.0_DP, & - dtl, irecp, lencounter, pltpenc_list%lvdotr(i)) - if (lencounter) then - icflg = 1 - symba_plA%levelg(index_pl) = irecp - symba_plA%levelm(index_pl) = max(irecp, symba_plA%levelm(index_pl)) - symba_tpA%levelg(index_tp) = irecp - symba_tpA%levelm(index_tp) = max(irecp, symba_tpA%levelm(index_tp)) - pltpenc_list%level(i) = irecp - end if - end if - end do - lencounter = (icflg == 1) - sgn = 1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - sgn = -1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - call symba_helio_drift(ireci, npl, symba_plA, dtl) - if (ntp > 0) call symba_helio_drift_tp(ireci, ntp, symba_tpA, symba_plA%mass(1), dtl) - if (lencounter) call symba_step_recur(lclose, t, irecp, npl, nplm, ntp, symba_plA, symba_tpA, dt0, eoffset, & - nplplenc, npltpenc, plplenc_list, pltpenc_list, nmergeadd, nmergesub, mergeadd_list, mergesub_list, & - encounter_file, out_type, param%nplmax, param%ntpmax, fragmax, param) - sgn = 1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - sgn = -1.0_DP - call symba_kick(irecp, nplplenc, npltpenc, plplenc_list, pltpenc_list, dth, sgn,symba_plA, symba_tpA) - if (lclose) then - vbs(:) = symba_plA%vb(:,1) - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if ((plplenc_list%status(i) == ACTIVE) .and. & - (symba_plA%levelg(index_i) >= ireci) .and. & - (symba_plA%levelg(index_j) >= ireci)) then - if (param%lfragmentation) then - call symba_fragmentation (t, dtl, i, nmergeadd, nmergesub, mergeadd_list, mergesub_list, & - eoffset, vbs, encounter_file, out_type, npl, symba_plA, nplplenc, plplenc_list, param%nplmax, & - param%ntpmax, fragmax) - else - call symba_merge_pl(t, dtl, i, nplplenc, plplenc_list, nmergeadd, nmergesub, mergeadd_list, & - mergesub_list, eoffset, vbs, encounter_file, out_type, npl, symba_plA) - end if - end if - end do - do i = 1, npltpenc - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if ((pltpenc_list%status(i) == ACTIVE) .and. & - (symba_plA%levelg(index_pl) >= ireci) .and. & - (symba_tpA%levelg(index_tp) >= ireci)) & - call symba_merge_tp(t, dtl, i, pltpenc_list, vbs, encounter_file, out_type, symba_plA, symba_tpA) !check that later - end do - end if - do i = 1, nplplenc - index_i = plplenc_list%index1(i) - index_j = plplenc_list%index2(i) - if (symba_plA%levelg(index_i) == irecp) symba_plA%levelg(index_i) = ireci - if (symba_plA%levelg(index_j) == irecp) symba_plA%levelg(index_j) = ireci - if (plplenc_list%level(i) == irecp) plplenc_list%level(i) = ireci - end do - do i = 1, npltpenc - index_pl = pltpenc_list%indexpl(i) - index_tp = pltpenc_list%indextp(i) - if (symba_plA%levelg(index_pl) == irecp) symba_plA%levelg(index_pl) = ireci - if (symba_tpA%levelg(index_tp) == irecp) symba_tpA%levelg(index_tp) = ireci - if (pltpenc_list%level(i) == irecp) pltpenc_list%level(i) = ireci - end do - end do - end if - - return - - end procedure symba_step_recur -end submodule s_symba_step_recur diff --git a/src/symba/symba_user_getacch.f90 b/src/symba/symba_user_getacch.f90 deleted file mode 100644 index 4b4e6080b..000000000 --- a/src/symba/symba_user_getacch.f90 +++ /dev/null @@ -1,17 +0,0 @@ -submodule (symba) s_symba_user_getacch -contains - module procedure symba_user_getacch - !! author: David A. Minton - !! - !! Add user-supplied heliocentric accelerations to planetss - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_user_getacch.f90 -use swiftest -implicit none - -! executable code - - return - - end procedure symba_user_getacch -end submodule s_symba_user_getacch diff --git a/src/symba/symba_user_getacch_tp.f90 b/src/symba/symba_user_getacch_tp.f90 deleted file mode 100644 index 148effcc0..000000000 --- a/src/symba/symba_user_getacch_tp.f90 +++ /dev/null @@ -1,22 +0,0 @@ -submodule (symba) s_symba_user_getacch_tp -contains - module procedure symba_user_getacch_tp - !! author: David A. Minton - !! - !! Add user-supplied heliocentric accelerations to test particles - !! - !! Adapted from David E. Kaufmann's Swifter routine: symba_user_getacch_tp.f90 - !! Adapted from Hal Levison's Swift routine symba_user_getacch_tp.f -! -! Notes : -! -!********************************************************************************************************************************** -use swiftest -implicit none - -! executable code - - return - - end procedure symba_user_getacch_tp -end submodule s_symba_user_getacch_tp From 8b32ff2a6fa5ba3d741cdd4f3cd8b784dd4c9d23 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Thu, 8 Jul 2021 23:07:26 -0400 Subject: [PATCH 04/23] Started building infrastructure for the SyMBA integrator --- Makefile | 6 ++++++ src/modules/rmvs_classes.f90 | 2 ++ src/modules/symba_classes.f90 | 39 +++++++++++++++++++++++++++++++++++ src/symba/symba_step.f90 | 4 +--- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c1945c17a..a49f80756 100644 --- a/Makefile +++ b/Makefile @@ -152,6 +152,11 @@ lib: ln -s $(SWIFTEST_HOME)/Makefile.Defines .; \ ln -s $(SWIFTEST_HOME)/Makefile .; \ make libdir + cd $(SWIFTEST_HOME)/src/symba; \ + rm -f Makefile.Defines Makefile; \ + ln -s $(SWIFTEST_HOME)/Makefile.Defines .; \ + ln -s $(SWIFTEST_HOME)/Makefile .; \ + make libdir cd $(SWIFTEST_HOME)/src/user; \ rm -f Makefile.Defines Makefile; \ ln -s $(SWIFTEST_HOME)/Makefile.Defines .; \ @@ -197,6 +202,7 @@ clean: cd $(SWIFTEST_HOME)/src/orbel; rm -f Makefile.Defines Makefile *.gc* cd $(SWIFTEST_HOME)/src/rmvs; rm -f Makefile.Defines Makefile *.gc* cd $(SWIFTEST_HOME)/src/setup; rm -f Makefile.Defines Makefile *.gc* + cd $(SWIFTEST_HOME)/src/symba; rm -f Makefile.Defines Makefile *.gc* cd $(SWIFTEST_HOME)/src/user; rm -f Makefile.Defines Makefile *.gc* cd $(SWIFTEST_HOME)/src/util; rm -f Makefile.Defines Makefile *.gc* cd $(SWIFTEST_HOME)/src/whm; rm -f Makefile.Defines Makefile *.gc* diff --git a/src/modules/rmvs_classes.f90 b/src/modules/rmvs_classes.f90 index 2baad04eb..5e1d69437 100644 --- a/src/modules/rmvs_classes.f90 +++ b/src/modules/rmvs_classes.f90 @@ -66,6 +66,7 @@ module rmvs_classes integer(I4B) :: ipleP !! index value of encountering planet logical :: lplanetocentric = .false. !! Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations contains + private procedure, public :: discard => rmvs_discard_tp !! Check to see if test particles should be discarded based on pericenter passage distances with respect to planets encountered procedure, public :: encounter_check => rmvs_encounter_check_tp !! Checks if any test particles are undergoing a close encounter with a massive body procedure, public :: fill => rmvs_fill_tp !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) @@ -89,6 +90,7 @@ module rmvs_classes class(rmvs_nbody_system), dimension(:), allocatable :: planetocentric logical :: lplanetocentric = .false. !! Flag that indicates that the object is a planetocentric set of masive bodies used for close encounter calculations contains + private procedure, public :: fill => rmvs_fill_pl !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) procedure, public :: setup => rmvs_setup_pl !! Constructor method - Allocates space for number of particles procedure, public :: spill => rmvs_spill_pl !! "Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 2aadd86e0..14cf7c7b2 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -24,6 +24,7 @@ module symba_classes !> Helio central body particle class type, public, extends(helio_cb) :: symba_cb contains + private end type symba_cb !******************************************************************************************************************************** @@ -33,6 +34,9 @@ module symba_classes !! Helio massive body particle class type, public, extends(helio_pl) :: symba_pl contains + private + procedure, public :: discard => symba_discard_pl !! Process massive body discards + procedure, public :: encounter_check => symba_encounter_check_pl !! Checks if massive bodies are going through close encounters with each other end type symba_pl !******************************************************************************************************************************** @@ -42,9 +46,44 @@ module symba_classes !! Helio test particle class type, public, extends(helio_tp) :: symba_tp contains + private + procedure, public :: discard => symba_discard_tp !! process test particle discards + procedure, public :: encounter_check => symba_encounter_check_tp !! Checks if any test particles are undergoing a close encounter with a massive body end type symba_tp interface + module subroutine symba_discard_pl(self, system, param) + use swiftest_classes, only : swiftest_nbody_system, swiftest_parameters + implicit none + class(symba_pl), intent(inout) :: self !! RMVS test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_discard_pl + + module subroutine symba_discard_tp(self, system, param) + use swiftest_classes, only : swiftest_nbody_system, swiftest_parameters + implicit none + class(symba_tp), intent(inout) :: self !! RMVS test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_discard_tp + + module function symba_encounter_check_pl(self, system, dt) result(lencounter) + implicit none + class(symba_pl), intent(inout) :: self !! RMVS test particle object + class(symba_nbody_system), intent(inout) :: system !! RMVS nbody system object + real(DP), intent(in) :: dt !! step size + logical :: lencounter !! Returns true if there is at least one close encounter + end function symba_encounter_check_pl + + module function symba_encounter_check_tp(self, system, dt) result(lencounter) + implicit none + class(symba_tp), intent(inout) :: self !! RMVS test particle object + class(symba_nbody_system), intent(inout) :: system !! RMVS nbody system object + real(DP), intent(in) :: dt !! step size + logical :: lencounter !! Returns true if there is at least one close encounter + end function symba_encounter_check_tp + module subroutine symba_step_system(self, param, t, dt) use swiftest_classes, only : swiftest_parameters implicit none diff --git a/src/symba/symba_step.f90 b/src/symba/symba_step.f90 index d3b189bfa..10e8938db 100644 --- a/src/symba/symba_step.f90 +++ b/src/symba/symba_step.f90 @@ -22,9 +22,7 @@ module subroutine symba_step_system(self, param, t, dt) class is (symba_pl) select type(tp => self%tp) class is (symba_tp) - lencounter_pl = pl%encounter_check(system, dt) - lencounter_tp = tp%encounter_check(system, dt) - lencounter = lencounter_pl .or. lencounter_tp + lencounter = pl%encounter_check(self, dt) .or. tp%encounter_check(self, dt) if (lencounter) then call self%interp(param, t, dt) else From e1861566148329798780d8640b584fc19de45487 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Fri, 9 Jul 2021 18:00:36 -0400 Subject: [PATCH 05/23] Put together basic SyMBA infrastructure --- Makefile.Defines | 8 +- src/discard/discard.f90 | 10 +- src/helio/helio_drift.f90 | 4 +- src/io/io.f90 | 287 ++++++------------- src/modules/helio_classes.f90 | 4 +- src/modules/rmvs_classes.f90 | 2 +- src/modules/swiftest_classes.f90 | 160 ++++------- src/modules/swiftest_globals.f90 | 6 +- src/modules/symba_classes.f90 | 282 +++++++++++++++++-- src/rmvs/rmvs_discard.f90 | 2 +- src/rmvs/rmvs_step.f90 | 14 +- src/setup/setup.f90 | 12 +- src/symba/symba_io.f90 | 470 +++++++++++++++++++++++++++++++ src/util/util_copy.f90 | 154 ---------- src/util/util_spill_and_fill.f90 | 38 +-- src/util/util_valid.f90 | 4 +- src/whm/whm_drift.f90 | 4 +- 17 files changed, 904 insertions(+), 557 deletions(-) create mode 100644 src/symba/symba_io.f90 delete mode 100644 src/util/util_copy.f90 diff --git a/Makefile.Defines b/Makefile.Defines index 07126f842..1346f4b09 100644 --- a/Makefile.Defines +++ b/Makefile.Defines @@ -65,13 +65,13 @@ GPAR = -fopenmp -ftree-parallelize-loops=4 GMEM = -fsanitize=undefined -fsanitize=address -fsanitize=leak GWARNINGS = -Wall -Warray-bounds -Wimplicit-interface -Wextra -Warray-temporaries -FFLAGS = $(IDEBUG) $(HEAPARR) +#FFLAGS = $(IDEBUG) $(HEAPARR) #FFLAGS = -init=snan,arrays -no-wrap-margin -O3 $(STRICTREAL) $(SIMDVEC) $(PAR) -FORTRAN = ifort +#FORTRAN = ifort #AR = xiar -#FORTRAN = gfortran -#FFLAGS = -ffree-line-length-none $(GDEBUG) #$(GMEM) +FORTRAN = gfortran +FFLAGS = -ffree-line-length-none $(GDEBUG) #$(GMEM) AR = ar # DO NOT include in CFLAGS the "-c" option to compile object only diff --git a/src/discard/discard.f90 b/src/discard/discard.f90 index 6609ed802..1a1aecea6 100644 --- a/src/discard/discard.f90 +++ b/src/discard/discard.f90 @@ -88,11 +88,11 @@ subroutine discard_sun_tp(tp, system, param) rh2 = dot_product(tp%xh(:, i), tp%xh(:, i)) if ((param%rmax >= 0.0_DP) .and. (rh2 > rmax2)) then tp%status(i) = DISCARDED_RMAX - write(*, *) "Particle ", tp%name(i), " too far from sun at t = ", t + write(*, *) "Particle ", tp%id(i), " too far from sun at t = ", t tp%ldiscard(i) = .true. else if ((param%rmin >= 0.0_DP) .and. (rh2 < rmin2)) then tp%status(i) = DISCARDED_RMIN - write(*, *) "Particle ", tp%name(i), " too close to sun at t = ", t + write(*, *) "Particle ", tp%id(i), " too close to sun at t = ", t tp%ldiscard(i) = .true. else if (param%rmaxu >= 0.0_DP) then rb2 = dot_product(tp%xb(:, i), tp%xb(:, i)) @@ -100,7 +100,7 @@ subroutine discard_sun_tp(tp, system, param) energy = 0.5_DP * vb2 - msys / sqrt(rb2) if ((energy > 0.0_DP) .and. (rb2 > rmaxu2)) then tp%status(i) = DISCARDED_RMAXU - write(*, *) "Particle ", tp%name(i), " is unbound and too far from barycenter at t = ", t + write(*, *) "Particle ", tp%id(i), " is unbound and too far from barycenter at t = ", t tp%ldiscard(i) = .true. end if end if @@ -150,7 +150,7 @@ subroutine discard_peri_tp(tp, system, param) (tp%atp(i) <= param%qmin_ahi) .and. & (tp%peri(i) <= param%qmin)) then tp%status(i) = DISCARDED_PERI - write(*, *) "Particle ", tp%name(i), " perihelion distance too small at t = ", t + write(*, *) "Particle ", tp%id(i), " perihelion distance too small at t = ", t tp%ldiscard(i) = .true. end if end if @@ -191,7 +191,7 @@ subroutine discard_pl_tp(tp, system, param) if (isp /= 0) then tp%status(i) = DISCARDED_PLR pl%ldiscard(j) = .true. - write(*, *) "Particle ", tp%name(i), " too close to massive body ", pl%name(j), " at t = ", t + write(*, *) "Particle ", tp%id(i), " too close to massive body ", pl%id(j), " at t = ", t tp%ldiscard(i) = .true. exit end if diff --git a/src/helio/helio_drift.f90 b/src/helio/helio_drift.f90 index ce55797bf..40da379ee 100644 --- a/src/helio/helio_drift.f90 +++ b/src/helio/helio_drift.f90 @@ -47,7 +47,7 @@ module subroutine helio_drift_pl(self, system, param, dt) dtp(1:npl), iflag(1:npl)) if (any(iflag(1:npl) /= 0)) then do i = 1, npl - write(*, *) " Planet ", pl%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", pl%id(i), " is lost!!!!!!!!!!" write(*, *) pl%xh(:,i) write(*, *) pl%vb(:,i) write(*, *) " stopping " @@ -136,7 +136,7 @@ module subroutine helio_drift_tp(self, system, param, dt) if (any(iflag(1:ntp) /= 0)) then tp%status = DISCARDED_DRIFTERR do i = 1, ntp - if (iflag(i) /= 0) write(*, *) "Particle ", tp%name(i), " lost due to error in Danby drift" + if (iflag(i) /= 0) write(*, *) "Particle ", tp%id(i), " lost due to error in Danby drift" end do end if end associate diff --git a/src/io/io.f90 b/src/io/io.f90 index 55789417b..57ee2176a 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -14,12 +14,12 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) implicit none ! Arguments class(swiftest_parameters), intent(inout) :: self !! Collection of parameters - integer, intent(in) :: unit !! File unit number - character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. !! If you do not include a char-literal-constant, the iotype argument contains only DT. - integer, intent(in) :: v_list(:) !! The first element passes the integrator code to the reader - integer, intent(out) :: iostat !! IO status code - character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + integer, intent(in) :: v_list(:) !! The first element passes the integrator code to the reader + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 ! Internals logical :: t0_set = .false. !! Is the initial time set in the input file? logical :: tstop_set = .false. !! Is the final time set in the input file? @@ -46,10 +46,6 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) ifirst = ilast + 1 param_value = io_get_token(line_trim, ifirst, ilast, iostat) select case (param_name) - case ("NPLMAX") - read(param_value, *) self%nplmax - case ("NTPMAX") - read(param_value, *) self%ntpmax case ("T0") read(param_value, *) self%t0 t0_set = .true. @@ -110,36 +106,19 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("BIG_DISCARD") call util_toupper(param_value) if (param_value == "YES" .or. param_value == 'T' ) self%lbig_discard = .true. - case ("FRAGMENTATION") - call util_toupper(param_value) - if (param_value == "YES" .or. param_value == "T") self%lfragmentation = .true. case ("MU2KG") read(param_value, *) self%MU2KG case ("TU2S") read(param_value, *) self%TU2S case ("DU2M") read(param_value, *) self%DU2M - case ("MTINY") - read(param_value, *) self%mtiny - mtiny_set = .true. case ("ENERGY") call util_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lenergy = .true. - case ("ROTATION") - call util_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%lrotation = .true. - case ("TIDES") - call util_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%ltides = .true. case ("GR") call util_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lgr = .true. - case ("YARKOVSKY") - call util_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%lyarkovsky = .true. - case ("YORP") - call util_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%lyorp = .true. + case ("NPLMAX", "NTPMAX", "MTINY", "PARTICLE_FILE", "ROTATION", "TIDES", "FRAGMENTATION", "SEED", "YARKOVSKY", "YORP") ! Ignore SyMBA-specific, not-yet-implemented, or obsolete input parameters case default write(iomsg,*) "Unknown parameter -> ",param_name iostat = -1 @@ -212,8 +191,6 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) end if end if - write(*,*) "NPLMAX = ",self%nplmax - write(*,*) "NTPMAX = ",self%ntpmax write(*,*) "T0 = ",self%t0 write(*,*) "TSTOP = ",self%tstop write(*,*) "DT = ",self%dt @@ -255,24 +232,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) self%inv_c2 = einstinC * self%TU2S / self%DU2M self%inv_c2 = (self%inv_c2)**(-2) - ! The fragmentation model requires the user to set the unit system explicitly. - if ((integrator == SYMBA) .or. (integrator == RINGMOONS)) then - write(*,*) "FRAGMENTATION = ",self%lfragmentation - if (.not.mtiny_set) then - write(iomsg,*) 'SyMBA requres an MTINY value' - iostat = -1 - end if - else - if (self%lfragmentation) then - write(iomsg,*) 'This integrator does not support fragmentation. This parameter will be ignored.' - end if - if (mtiny_set) then - write(iomsg,*) 'This integrator does not support MTINY. This parameter will be ignored.' - return - end if - end if - - if ((integrator == SYMBA) .or. (integrator == RINGMOONS) .or. (integrator == RMVS)) then + if (integrator == RMVS) then if (.not.self%lclose) then write(iomsg,*) 'This integrator requires CHK_CLOSE to be enabled.' iostat = -1 @@ -280,22 +240,12 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) end if end if - if (mtiny_set) then - if (self%mtiny < 0.0_DP) then - write(iomsg,*) "Invalid MTINY: ", self%mtiny - iostat = -1 - return - else - write(*,*) "MTINY = ", self%mtiny - end if - end if - ! Determine if the GR flag is set correctly for this integrator select case(integrator) case(WHM, RMVS) write(*,*) "GR = ", self%lgr case default - write(iomsg, *) 'GR is implemented compatible with this integrator. This parameter will be ignored.' + write(iomsg, *) 'GR is not yet implemented for this integrator. This parameter will be ignored.' end select iostat = 0 @@ -313,83 +263,65 @@ module subroutine io_param_writer(self, unit, iotype, v_list, iostat, iomsg) implicit none ! Arguments class(swiftest_parameters),intent(in) :: self !! Collection of parameters - integer, intent(in) :: unit !! File unit number - character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. !! If you do not include a char-literal-constant, the iotype argument contains only DT. - integer, intent(in) :: v_list(:) !! Not used in this procedure - integer, intent(out) :: iostat !! IO status code - character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + integer, intent(in) :: v_list(:) !! Not used in this procedure + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 ! Internals - !! In user-defined derived-type output, we need newline characters at the end of each format statement - !character(*),parameter :: Ifmt = '(A20,1X,I0/)' !! Format label for integer values - !character(*),parameter :: Rfmt = '(A20,1X,ES25.17/)' !! Format label for real values - !character(*),parameter :: R2fmt = '(A20,2(1X,ES25.17)/)' !! Format label for 2x real values - !character(*),parameter :: Sfmt = '(A20,1X,A/)' !! Format label for string values - !character(*),parameter :: Lfmt = '(A20,1X,L1/)' !! Format label for logical values - !character(*),parameter :: Pfmt = '(A20/)' !! Format label for single parameter string - character(*),parameter :: Ifmt = '(A20,1X,I0)' !! Format label for integer values - character(*),parameter :: Rfmt = '(A20,1X,ES25.17)' !! Format label for real values - character(*),parameter :: R2fmt = '(A20,2(1X,ES25.17))' !! Format label for 2x real values - character(*),parameter :: Sfmt = '(A20,1X,A)' !! Format label for string values - character(*),parameter :: Lfmt = '(A20,1X,L1)' !! Format label for logical values - character(*),parameter :: Pfmt = '(A20)' !! Format label for single parameter string - - write(unit, Ifmt) "NPLMAX", self%nplmax - write(unit, Ifmt) "NTPMAX", self%ntpmax - write(unit, Rfmt) "T0", self%t0 - write(unit, Rfmt) "TSTOP", self%tstop - write(unit, Rfmt) "DT", self%dt - write(unit, Sfmt) "CB_IN", trim(adjustl(self%incbfile)) - write(unit, Sfmt) "PL_IN", trim(adjustl(self%inplfile)) - write(unit, Sfmt) "TP_IN", trim(adjustl(self%intpfile)) - write(unit, Sfmt) "IN_TYPE", trim(adjustl(self%out_type)) - if (self%istep_out > 0) then - write(unit, Ifmt) "ISTEP_OUT", self%istep_out - write(unit, Sfmt) "BIN_OUT", trim(adjustl(self%outfile)) - write(unit, Sfmt) "OUT_TYPE", trim(adjustl(self%out_type)) - write(unit, Sfmt) "OUT_FORM", trim(adjustl(self%out_form)) - write(unit, Sfmt) "OUT_STAT", "APPEND" - else - write(unit, Pfmt) "!ISTEP_OUT " - write(unit, Pfmt) "!BIN_OUT" - write(unit, Pfmt) "!OUT_TYPE" - write(unit, Pfmt) "!OUT_FORM" - write(unit, Pfmt) "!OUT_STAT" - end if - write(unit, Sfmt) "ENC_OUT", trim(adjustl(self%encounter_file)) - if (self%istep_dump > 0) then - write(unit, Ifmt) "ISTEP_DUMP", self%istep_dump - else - write(unit, Pfmt) "!ISTEP_DUMP" - end if - write(unit, Rfmt) "CHK_RMIN", self%rmin - write(unit, Rfmt) "CHK_RMAX", self%rmax - write(unit, Rfmt) "CHK_EJECT", self%rmaxu - write(unit, Rfmt) "CHK_QMIN", self%qmin - if (self%qmin >= 0.0_DP) then - write(unit, Sfmt) "CHK_QMIN_COORD", trim(adjustl(self%qmin_coord)) - write(unit, R2fmt) "CHK_QMIN_RANGE", self%qmin_alo, self%qmin_ahi - else - write(unit, Pfmt) "!CHK_QMIN_COORD" - write(unit, Pfmt) "!CHK_QMIN_RANGE" - end if - if (self%lmtiny) write(unit, Rfmt) "MTINY", self%mtiny - write(unit, Rfmt) "MU2KG", self%MU2KG - write(unit, Rfmt) "TU2S", self%TU2S - write(unit, Rfmt) "DU2M", self%DU2M - - write(unit, Lfmt) "EXTRA_FORCE", self%lextra_force - write(unit, Lfmt) "BIG_DISCARD", self%lbig_discard - write(unit, Lfmt) "CHK_CLOSE", self%lclose - write(unit, Lfmt) "FRAGMENTATION", self%lfragmentation - write(unit, Lfmt) "ROTATION", self%lrotation - write(unit, Lfmt) "TIDES", self%ltides - write(unit, Lfmt) "GR", self%lgr - write(unit, Lfmt) "ENERGY", self%lenergy - !write(unit, Lfmt) "YARKOVSKY", self%lyarkovsky - !write(unit, Lfmt) "YORP", self%lyorp - iostat = 0 - iomsg = "UDIO not implemented" + character(*),parameter :: Ifmt = '(I0)' !! Format label for integer values + character(*),parameter :: Rfmt = '(ES25.17)' !! Format label for real values + character(*),parameter :: Rarrfmt = '(3(ES25.17,1X))' !! Format label for real values + character(*),parameter :: Lfmt = '(L1)' !! Format label for logical values + character(len=*), parameter :: Afmt = '(A25,1X,64(:,A25,1X))' + character(256) :: param_name, param_value + type character_array + character(25) :: value + end type character_array + type(character_array), dimension(:), allocatable :: param_array + integer(I4B) :: i + + associate(param => self) + write(param_name, Afmt) "T0"; write(param_value,Rfmt) param%t0; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "TSTOP"; write(param_value, Rfmt) param%tstop; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "DT"; write(param_value, Rfmt) param%dt; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "PL_IN"; write(param_value, Afmt) trim(adjustl(param%inplfile)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "TP_in"; write(param_value, Afmt) trim(adjustl(param%intpfile)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "IN_TYPE"; write(param_value, Afmt) trim(adjustl(param%in_type)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + if (param%istep_out > 0) then + write(param_name, Afmt) "ISTEP_OUT"; write(param_value, Ifmt) param%istep_out; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "BIN_OUT"; write(param_value, Afmt) trim(adjustl(param%outfile)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "OUT_TYPE"; write(param_value, Afmt) trim(adjustl(param%out_type)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "OUT_FORM"; write(param_value, Afmt) trim(adjustl(param%out_form)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "OUT_STAT"; write(param_value, Afmt) "APPEND"; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + end if + write(param_name, Afmt) "ENC_OUT"; write(param_value, Afmt) trim(adjustl(param%encounter_file)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + if (param%istep_dump > 0) then + write(param_name, Afmt) "ISTEP_DUMP"; write(param_value, Ifmt) param%istep_dump; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + end if + write(param_name, Afmt) "CHK_RMIN"; write(param_value, Rfmt) param%rmin; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "CHK_RMAX"; write(param_value, Rfmt) param%rmax; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "CHK_EJECT"; write(param_value, Rfmt) param%rmaxu; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "CHK_QMIN"; write(param_value, Rfmt) param%qmin; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + if (param%qmin >= 0.0_DP) then + write(param_name, Afmt) "CHK_QMIN_COORD"; write(param_value, Afmt) trim(adjustl(param%qmin_coord)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + allocate(param_array(2)) + write(param_array(1)%value, Rfmt) param%qmin_alo + write(param_array(2)%value, Rfmt) param%qmin_ahi + write(param_name, Afmt) "CHK_QMIN_RANGE"; write(unit, Afmt) adjustl(param_name), adjustl(param_array(1)%value), adjustl(param_array(2)%value) + end if + write(param_name, Afmt) "MU2KG"; write(param_value, Rfmt) param%MU2KG; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "TU2S"; write(param_value, Rfmt) param%TU2S ; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "DU2M"; write(param_value, Rfmt) param%DU2M; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "EXTRA_FORCE"; write(param_value, Lfmt) param%lextra_force; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "BIG_DISCARD"; write(param_value, Lfmt) param%lbig_discard; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "CHK_CLOSE"; write(param_value, Lfmt) param%lclose; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "ENERGY"; write(param_value, Lfmt) param%lenergy; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "GR"; write(param_value, Lfmt) param%lgr; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + iostat = 0 + iomsg = "UDIO not implemented" + end associate return end subroutine io_param_writer @@ -570,7 +502,7 @@ module function io_get_args(integrator, param_file_name) result(ierr) if (ierr /= 0) call util_exit(USAGE) end function io_get_args - function io_get_token(buffer, ifirst, ilast, ierr) result(token) + module function io_get_token(buffer, ifirst, ilast, ierr) result(token) !! author: David A. Minton !! !! Retrieves a character token from an input string. Here a token is defined as any set of contiguous non-blank characters not @@ -658,7 +590,7 @@ module subroutine io_read_body_in(self, param) do i = 1, nbody select type(self) class is (swiftest_pl) - read(iu, *, iostat = ierr) self%name(i), val + read(iu, *, iostat = ierr) self%id(i), val self%mass(i) = real(val / param%GU, kind=DP) self%Gmass(i) = real(val, kind=DP) if (param%lclose) then @@ -667,16 +599,8 @@ module subroutine io_read_body_in(self, param) else self%radius(i) = 0.0_DP end if - if (param%lrotation) then - read(iu, iostat = ierr) self%Ip(:, i) - read(iu, iostat = ierr) self%rot(:, i) - end if - if (param%ltides) then - read(iu, iostat = ierr) self%k2(i) - read(iu, iostat = ierr) self%Q(i) - end if class is (swiftest_tp) - read(iu, *, iostat = ierr) self%name(i) + read(iu, *, iostat = ierr) self%id(i) end select if (ierr /= 0 ) exit read(iu, *, iostat = ierr) self%xh(1, i), self%xh(2, i), self%xh(3, i) @@ -735,15 +659,6 @@ module subroutine io_read_cb_in(self, param) read(iu, *, iostat = ierr) self%radius read(iu, *, iostat = ierr) self%j2rp2 read(iu, *, iostat = ierr) self%j4rp4 - if (param%lrotation) then - read(iu, *, iostat = ierr) self%Ip(:) - read(iu, *, iostat = ierr) self%rot(:) - end if - if (param%ltides) then - read(iu, *, iostat = ierr) self%k2 - read(iu, *, iostat = ierr) self%Q - end if - else open(unit = iu, file = param%incbfile, status = 'old', form = 'UNFORMATTED', iostat = ierr) call self%read_frame(iu, param, XV, ierr) @@ -852,20 +767,20 @@ end function io_read_encounter module subroutine io_read_frame_body(self, iu, param, form, ierr) !! author: David A. Minton !! - !! Reads a frame of output of either test particle or massive body data to the binary output file - !! Note: If outputting to orbital elements, but sure that the conversion is done prior to calling this method + !! Reads a frame of output of either test particle or massive body data from a binary output file !! !! Adapted from David E. Kaufmann's Swifter routine io_read_frame.f90 !! Adapted from Hal Levison's Swift routine io_read_frame.F implicit none ! Arguments - class(swiftest_body), intent(inout) :: self !! Swiftest particle object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_body), intent(inout) :: self !! Swiftest particle object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - character(*), intent(in) :: form !! Input format code ("XV" or "EL") - integer(I4B), intent(out) :: ierr !! Error code + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code associate(n => self%nbody) + read(iu, iostat = ierr) self%id(1:n) read(iu, iostat = ierr) self%name(1:n) select case (form) case (EL) @@ -888,18 +803,6 @@ module subroutine io_read_frame_body(self, iu, param, form, ierr) read(iu, iostat = ierr) self%Gmass(1:n) self%mass(1:n) = self%Gmass / param%GU read(iu, iostat = ierr) self%radius(1:n) - if (param%lrotation) then - read(iu, iostat = ierr) self%Ip(1, 1:n) - read(iu, iostat = ierr) self%Ip(2, 1:n) - read(iu, iostat = ierr) self%Ip(3, 1:n) - read(iu, iostat = ierr) self%rot(1, 1:n) - read(iu, iostat = ierr) self%rot(2, 1:n) - read(iu, iostat = ierr) self%rot(3, 1:n) - end if - if (param%ltides) then - read(iu, iostat = ierr) self%k2(1:n) - read(iu, iostat = ierr) self%Q(1:n) - end if end select end associate @@ -926,19 +829,13 @@ module subroutine io_read_frame_cb(self, iu, param, form, ierr) character(*), intent(in) :: form !! Input format code ("XV" or "EL") integer(I4B), intent(out) :: ierr !! Error cod + read(iu, iostat = ierr) self%id + read(iu, iostat = ierr) self%name read(iu, iostat = ierr) self%Gmass self%mass = self%Gmass / param%GU read(iu, iostat = ierr) self%radius read(iu, iostat = ierr) self%j2rp2 read(iu, iostat = ierr) self%j4rp4 - if (param%lrotation) then - read(iu, iostat = ierr) self%Ip(:) - read(iu, iostat = ierr) self%rot(:) - end if - if (param%ltides) then - read(iu, iostat = ierr) self%k2 - read(iu, iostat = ierr) self%Q - end if if (ierr /=0) then write(*,*) 'Error reading central body data' call util_exit(FAILURE) @@ -1065,7 +962,7 @@ module subroutine io_write_discard(self, param) class(swiftest_body), allocatable :: pltemp associate(t => param%t, discards => self%tp_discards, nsp => self%tp_discards%nbody, dxh => self%tp_discards%xh, dvh => self%tp_discards%vh, & - dname => self%tp_discards%name, dstatus => self%tp_discards%status) + dname => self%tp_discards%id, dstatus => self%tp_discards%status) select case(param%out_stat) case('APPEND') @@ -1091,7 +988,7 @@ module subroutine io_write_discard(self, param) end do if (param%lbig_discard) then associate(npl => self%pl%nbody, pl => self%pl, GMpl => self%pl%Gmass, & - Rpl => self%pl%radius, name => self%pl%name, xh => self%pl%xh) + Rpl => self%pl%radius, name => self%pl%id, xh => self%pl%xh) if (param%lgr) then allocate(pltemp, source = pl) @@ -1187,6 +1084,7 @@ module subroutine io_write_frame_body(self, iu, param) associate(n => self%nbody) if (n == 0) return + write(iu) self%id(1:n) write(iu) self%name(1:n) select case (param%out_form) case (EL) @@ -1208,18 +1106,6 @@ module subroutine io_write_frame_body(self, iu, param) class is (swiftest_pl) ! Additional output if the passed polymorphic object is a massive body write(iu) self%Gmass(1:n) write(iu) self%radius(1:n) - if (param%lrotation) then - write(iu) self%Ip(1, 1:n) - write(iu) self%Ip(2, 1:n) - write(iu) self%Ip(3, 1:n) - write(iu) self%rot(1, 1:n) - write(iu) self%rot(2, 1:n) - write(iu) self%rot(3, 1:n) - end if - if (param%ltides) then - write(iu) self%k2(1:n) - write(iu) self%Q(1:n) - end if end select end associate @@ -1239,23 +1125,12 @@ module subroutine io_write_frame_cb(self, iu, param) integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + write(iu) self%id + write(iu) self%name write(iu) self%Gmass write(iu) self%radius write(iu) self%j2rp2 write(iu) self%j4rp4 - if (param%lrotation) then - write(iu) self%Ip(1) - write(iu) self%Ip(2) - write(iu) self%Ip(3) - write(iu) self%rot(1) - write(iu) self%rot(2) - write(iu) self%rot(3) - end if - if (param%ltides) then - write(iu) self%k2 - write(iu) self%Q - end if - return end subroutine io_write_frame_cb diff --git a/src/modules/helio_classes.f90 b/src/modules/helio_classes.f90 index b7671883a..b7bdf826c 100644 --- a/src/modules/helio_classes.f90 +++ b/src/modules/helio_classes.f90 @@ -4,7 +4,7 @@ module helio_classes !! Definition of classes and methods specific to the Democratic Heliocentric Method !! Adapted from David E. Kaufmann's Swifter routine: helio.f90 use swiftest_globals - use swiftest_classes, only : swiftest_cb, swiftest_pl, swiftest_tp + use swiftest_classes, only : swiftest_cb, swiftest_pl, swiftest_tp, swiftest_nbody_system use whm_classes, only : whm_nbody_system implicit none @@ -171,7 +171,7 @@ module subroutine helio_step_pl(self, system, param, t, dt) end subroutine helio_step_pl module subroutine helio_step_tp(self, system, param, t, dt) - use swiftest_classes, only : swiftest_cb, swiftest_parameters + use swiftest_classes, only : swiftest_cb, swiftest_parameters, swiftest_nbody_system implicit none class(helio_tp), intent(inout) :: self !! Helio test particle object class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object diff --git a/src/modules/rmvs_classes.f90 b/src/modules/rmvs_classes.f90 index 5e1d69437..7b4ecc36d 100644 --- a/src/modules/rmvs_classes.f90 +++ b/src/modules/rmvs_classes.f90 @@ -81,7 +81,7 @@ module rmvs_classes !******************************************************************************************************************************* !> RMVS massive body particle class - type, private, extends(whm_pl) :: rmvs_pl + type, public, extends(whm_pl) :: rmvs_pl integer(I4B), dimension(:), allocatable :: nenc !! number of test particles encountering planet this full rmvs time step integer(I4B), dimension(:), allocatable :: tpenc1P !! index of first test particle encountering planet integer(I4B), dimension(:), allocatable :: plind ! Connects the planetocentric indices back to the heliocentric planet list diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 3d1cba23d..d8a5e46d5 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -9,7 +9,7 @@ module swiftest_classes public :: discard_pl, discard_system, discard_tp public :: drift_one public :: eucl_dist_index_plpl, eucl_dist_index_pltp, eucl_irij3_plpl - public :: io_dump_param, io_dump_swiftest, io_dump_system, io_get_args, io_param_reader, io_param_writer, io_read_body_in, & + public :: io_dump_param, io_dump_swiftest, io_dump_system, io_get_args, io_get_token, io_param_reader, io_param_writer, io_read_body_in, & io_read_cb_in, io_read_param_in, io_read_frame_body, io_read_frame_cb, io_read_frame_system, io_read_initialize_system, & io_write_discard, io_write_encounter, io_write_frame_body, io_write_frame_cb, io_write_frame_system public :: kickvh_body @@ -17,10 +17,9 @@ module swiftest_classes public :: orbel_el2xv_vec, orbel_xv2el_vec, orbel_scget, orbel_xv2aeq, orbel_xv2aqt public :: setup_body, setup_construct_system, setup_pl, setup_tp public :: user_getacch_body - public :: util_coord_b2h_pl, util_coord_b2h_tp, util_coord_h2b_pl, util_coord_h2b_tp, util_copy_body, util_copy_cb, util_copy_pl, & - util_copy_tp, util_copy_system, util_fill_body, util_fill_pl, util_fill_tp, util_reverse_status, util_set_beg_end_cb, & - util_set_beg_end_pl, util_set_ir3h, util_set_msys, util_set_mu_pl, util_set_mu_tp, util_set_rhill, & - util_spill_body, util_spill_pl, util_spill_tp + public :: util_coord_b2h_pl, util_coord_b2h_tp, util_coord_h2b_pl, util_coord_h2b_tp, util_fill_body, util_fill_pl, util_fill_tp, & + util_reverse_status, util_set_beg_end_cb, util_set_beg_end_pl, util_set_ir3h, util_set_msys, util_set_mu_pl, & + util_set_mu_tp, util_set_rhill, util_spill_body, util_spill_pl, util_spill_tp !******************************************************************************************************************************** ! swiftest_parameters class definitions @@ -54,7 +53,6 @@ module swiftest_classes real(DP) :: qmin_alo = -1.0_DP !! Minimum semimajor axis for qmin real(DP) :: qmin_ahi = -1.0_DP !! Maximum semimajor axis for qmin character(STRMAX) :: encounter_file = ENC_OUTFILE !! Name of output file for encounters - real(DP) :: MTINY = -1.0_DP !! Smallest mass that is fully gravitating real(QP) :: MU2KG = -1.0_QP !! Converts mass units to grams real(QP) :: TU2S = -1.0_QP !! Converts time units to seconds real(QP) :: DU2M = -1.0_QP !! Converts distance unit to centimeters @@ -65,10 +63,6 @@ module swiftest_classes logical :: lextra_force = .false. !! User defined force function turned on logical :: lbig_discard = .false. !! Save big bodies on every discard logical :: lclose = .false. !! Turn on close encounters - logical :: lfragmentation = .false. !! Do fragmentation modeling instead of simple merger. - logical :: lmtiny = .false. !! Use the MTINY variable (Automatically set if running SyMBA) - logical :: lrotation = .false. !! Include rotation states of big bodies - logical :: ltides = .false. !! Include tidal dissipation logical :: lenergy = .false. !! Track the total energy of the system logical :: loblatecb = .false. !! Calculate acceleration from oblate central body (automatically turns true if nonzero J2 is input) @@ -96,11 +90,10 @@ module swiftest_classes contains !! The minimal methods that all systems must have private - procedure :: dump => io_dump_swiftest + procedure :: dump => io_dump_swiftest procedure(abstract_initialize), public, deferred :: initialize - procedure(abstract_write_frame), public, deferred :: write_frame procedure(abstract_read_frame), public, deferred :: read_frame - procedure(abstract_copy), public, deferred :: copy + procedure(abstract_write_frame), public, deferred :: write_frame end type swiftest_base !******************************************************************************************************************************** @@ -108,6 +101,8 @@ module swiftest_classes !******************************************************************************************************************************** !> A concrete lass for the central body in a Swiftest simulation type, abstract, public, extends(swiftest_base) :: swiftest_cb + character(len=STRMAX) :: name !! Non-unique name + integer(I4B) :: id !! External identifier (unique) real(DP) :: mass = 0.0_DP !! Central body mass (units MU) real(DP) :: Gmass = 0.0_DP !! Central mass gravitational term G * mass (units GU * MU) real(DP) :: radius = 0.0_DP !! Central body radius (units DU) @@ -119,16 +114,11 @@ module swiftest_classes real(DP), dimension(NDIM) :: aoblend = 0.0_DP !! Barycentric acceleration due to central body oblatenes at end of step real(DP), dimension(NDIM) :: xb = 0.0_DP !! Barycentric position (units DU) real(DP), dimension(NDIM) :: vb = 0.0_DP !! Barycentric velocity (units DU / TU) - real(DP), dimension(NDIM) :: Ip = 0.0_DP !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. - real(DP), dimension(NDIM) :: rot = 0.0_DP !! Body rotation vector in inertial coordinate frame (units rad / TU) - real(DP) :: k2 = 0.0_DP !! Tidal Love number - real(DP) :: Q = 0.0_DP !! Tidal quality factor contains private procedure, public :: initialize => io_read_cb_in !! I/O routine for reading in central body data procedure, public :: write_frame => io_write_frame_cb !! I/O routine for writing out a single frame of time-series data for the central body procedure, public :: read_frame => io_read_frame_cb !! I/O routine for reading out a single frame of time-series data for the central body - procedure, public :: copy => util_copy_cb !! Copies elements of one object to another. procedure, public :: set_beg_end => util_set_beg_end_cb !! Sets the beginning and ending oblateness acceleration term end type swiftest_cb @@ -138,25 +128,28 @@ module swiftest_classes !> An abstract class for a generic collection of Swiftest bodies type, abstract, public, extends(swiftest_base) :: swiftest_body !! Superclass that defines the generic elements of a Swiftest particle - logical :: lfirst = .true. !! Run the current step as a first - integer(I4B) :: nbody = 0 !! Number of bodies - integer(I4B), dimension(:), allocatable :: name !! External identifier - integer(I4B), dimension(:), allocatable :: status !! An integrator-specific status indicator - logical, dimension(:), allocatable :: ldiscard !! Body should be discarded - real(DP), dimension(:,:), allocatable :: xh !! Heliocentric position - real(DP), dimension(:,:), allocatable :: vh !! Heliocentric velocity - real(DP), dimension(:,:), allocatable :: xb !! Barycentric position - real(DP), dimension(:,:), allocatable :: vb !! Barycentric velocity - real(DP), dimension(:,:), allocatable :: ah !! Total heliocentric acceleration - real(DP), dimension(:,:), allocatable :: aobl !! Barycentric accelerations of bodies due to central body oblatenes - real(DP), dimension(:), allocatable :: ir3h !! Inverse heliocentric radius term (1/rh**3) - real(DP), dimension(:), allocatable :: a !! Semimajor axis (pericentric distance for a parabolic orbit) - real(DP), dimension(:), allocatable :: e !! Eccentricity - real(DP), dimension(:), allocatable :: inc !! Inclination - real(DP), dimension(:), allocatable :: capom !! Longitude of ascending node - real(DP), dimension(:), allocatable :: omega !! Argument of pericenter - real(DP), dimension(:), allocatable :: capm !! Mean anomaly - real(DP), dimension(:), allocatable :: mu !! G * (Mcb + [m]) + logical :: lfirst = .true. !! Run the current step as a first + integer(I4B) :: nbody = 0 !! Number of bodies + character(len=STRMAX), dimension(:), allocatable :: name !! Non-unique name + integer(I4B), dimension(:), allocatable :: id !! External identifier (unique) + integer(I4B), dimension(:), allocatable :: status !! An integrator-specific status indicator + logical, dimension(:), allocatable :: ldiscard !! Body should be discarded + real(DP), dimension(:,:), allocatable :: xh !! Heliocentric position + real(DP), dimension(:,:), allocatable :: vh !! Heliocentric velocity + real(DP), dimension(:,:), allocatable :: xb !! Barycentric position + real(DP), dimension(:,:), allocatable :: vb !! Barycentric velocity + real(DP), dimension(:,:), allocatable :: ah !! Total heliocentric acceleration + real(DP), dimension(:,:), allocatable :: aobl !! Barycentric accelerations of bodies due to central body oblatenes + real(DP), dimension(:), allocatable :: ir3h !! Inverse heliocentric radius term (1/rh**3) + real(DP), dimension(:), allocatable :: a !! Semimajor axis (pericentric distance for a parabolic orbit) + real(DP), dimension(:), allocatable :: e !! Eccentricity + real(DP), dimension(:), allocatable :: inc !! Inclination + real(DP), dimension(:), allocatable :: capom !! Longitude of ascending node + real(DP), dimension(:), allocatable :: omega !! Argument of pericenter + real(DP), dimension(:), allocatable :: capm !! Mean anomaly + real(DP), dimension(:), allocatable :: mu !! G * (Mcb + [m]) + integer(I4B), dimension(:,:), allocatable :: k_eucl !! Index array used to convert flattened the body-body comparison upper triangular matrix + integer(I8B) :: num_comparisons !! Number of body-body comparisons in the flattened upper triangular matrix !! Note to developers: If you add components to this class, be sure to update methods and subroutines that traverse the !! component list, such as setup_body and util_spill contains @@ -176,7 +169,6 @@ module swiftest_classes procedure, public :: set_ir3 => util_set_ir3h !! Sets the inverse heliocentric radius term (1/rh**3) procedure, public :: setup => setup_body !! A constructor that sets the number of bodies and allocates all allocatable arrays procedure, public :: accel_user => user_getacch_body !! Add user-supplied heliocentric accelerations to planets - procedure, public :: copy => util_copy_body !! Copies elements of one object to another. procedure, public :: fill => util_fill_body !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) procedure, public :: spill => util_spill_body !! "Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) procedure, public :: reverse_status => util_reverse_status !! Reverses the active/inactive status of all particles in a structure @@ -192,19 +184,11 @@ module swiftest_classes real(DP), dimension(:), allocatable :: Gmass !! Mass gravitational term G * mass (units GU * MU) real(DP), dimension(:), allocatable :: rhill !! Body mass (units MU) real(DP), dimension(:), allocatable :: radius !! Body radius (units DU) - real(DP), dimension(:), allocatable :: density !! Body mass density - calculated internally (units MU / DU**3) - real(DP), dimension(:,:), allocatable :: Ip !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). - !! Principal axis rotation assumed. - real(DP), dimension(:,:), allocatable :: rot !! Body rotation vector in inertial coordinate frame (units rad / TU) - real(DP), dimension(:), allocatable :: k2 !! Tidal Love number - real(DP), dimension(:), allocatable :: Q !! Tidal quality factor - integer(I4B) :: num_comparisons !! Number of pl-pl Euclidean distance comparisons - integer(I4B), dimension(:,:), allocatable :: k_eucl !! Index array that converts i, j array indices into k index for use in - !! the Euclidean distance matrix real(DP), dimension(:), allocatable :: irij3 !! 1.0_DP / (rji2 * sqrt(rji2)) where rji2 is the square of the Euclidean distance real(DP), dimension(:,:), allocatable :: xbeg !! Position at beginning of step real(DP), dimension(:,:), allocatable :: xend !! Position at end of step real(DP), dimension(:,:), allocatable :: vbeg !! Velocity at beginning of step + real(DP), dimension(:), allocatable :: density !! Body mass density - calculated internally (units MU / DU**3) !! Note to developers: If you add components to this class, be sure to update methods and subroutines that traverse the !! component list, such as setup_pl and util_spill_pl contains @@ -220,7 +204,6 @@ module swiftest_classes procedure, public :: set_rhill => util_set_rhill !! Calculates the Hill's radii for each body procedure, public :: h2b => util_coord_h2b_pl !! Convert massive bodies from heliocentric to barycentric coordinates (position and velocity) procedure, public :: b2h => util_coord_b2h_pl !! Convert massive bodies from barycentric to heliocentric coordinates (position and velocity) - procedure, public :: copy => util_copy_pl !! Copies elements of one object to another. procedure, public :: fill => util_fill_pl !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) procedure, public :: set_beg_end => util_set_beg_end_pl !! Sets the beginning and ending positions and velocities of planets. procedure, public :: spill => util_spill_pl !! "Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) @@ -249,7 +232,6 @@ module swiftest_classes procedure, public :: set_mu => util_set_mu_tp !! Method used to construct the vectorized form of the central body mass procedure, public :: h2b => util_coord_h2b_tp !! Convert test particles from heliocentric to barycentric coordinates (position and velocity) procedure, public :: b2h => util_coord_b2h_tp !! Convert test particles from barycentric to heliocentric coordinates (position and velocity) - procedure, public :: copy => util_copy_tp !! Copies elements of one object to another. procedure, public :: fill => util_fill_tp !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) procedure, public :: spill => util_spill_tp !! "Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) end type swiftest_tp @@ -260,18 +242,22 @@ module swiftest_classes !> An abstract class for a basic Swiftest nbody system type, abstract, public, extends(swiftest_base) :: swiftest_nbody_system !! This superclass contains a minimial system of a set of test particles (tp), massive bodies (pl), and a central body (cb) - class(swiftest_cb), allocatable :: cb !! Central body data structure - class(swiftest_pl), allocatable :: pl !! Massive body data structure - class(swiftest_tp), allocatable :: tp !! Test particle data structure - class(swiftest_tp), allocatable :: tp_discards !! Discarded test particle data structure - real(DP) :: msys = 0.0_DP !! Total system mass - used for barycentric coordinate conversion - real(DP) :: ke = 0.0_DP !! System kinetic energy - real(DP) :: pe = 0.0_DP !! System potential energy - real(DP) :: te = 0.0_DP !! System total energy - real(DP), dimension(NDIM) :: htot = 0.0_DP !! System angular momentum vector - logical :: lbeg !! True if this is the beginning of a step. This is used so that test particle steps can be calculated - !! separately from massive bodies. Massive body variables are saved at half steps, and passed to - !! the test particles + class(swiftest_cb), allocatable :: cb !! Central body data structure + class(swiftest_pl), allocatable :: pl !! Massive body data structure + class(swiftest_tp), allocatable :: tp !! Test particle data structure + class(swiftest_tp), allocatable :: tp_discards !! Discarded test particle data structure + real(DP) :: msys = 0.0_DP !! Total system mass - used for barycentric coordinate conversion + real(DP) :: ke = 0.0_DP !! System kinetic energy + real(DP) :: pe = 0.0_DP !! System potential energy + real(DP) :: te = 0.0_DP !! System total energy + real(DP), dimension(NDIM) :: Ltot = 0.0_DP !! System angular momentum vector + real(DP), dimension(NDIM) :: Lescape = 0.0_DP !! Angular momentum of bodies that escaped the system (used for bookeeping) + real(DP) :: Mescape = 0.0_DP !! Mass of bodies that escaped the system (used for bookeeping) + real(DP) :: Ecollisions = 0.0_DP !! Energy lost from system due to collisions + real(DP) :: Euntracked = 0.0_DP !! Energy gained from system due to escaped bodies + logical :: lbeg !! True if this is the beginning of a step. This is used so that test particle steps can be calculated + !! separately from massive bodies. Massive body variables are saved at half steps, and passed to + !! the test particles contains private !> Each integrator will have its own version of the step @@ -285,17 +271,9 @@ module swiftest_classes procedure, public :: set_msys => util_set_msys !! Sets the value of msys from the masses of system bodies. procedure, public :: write_discard => io_write_discard !! Append a frame of output data to file procedure, public :: write_frame => io_write_frame_system !! Append a frame of output data to file - procedure, public :: copy => util_copy_system !! Copies elements of one object to another. end type swiftest_nbody_system abstract interface - subroutine abstract_copy(self, src, mask) - import swiftest_base - class(swiftest_base), intent(inout) :: self - class(swiftest_base), intent(in) :: src - logical, dimension(:), intent(in) :: mask - end subroutine abstract_copy - subroutine abstract_discard_body(self, system, param) import swiftest_body, swiftest_nbody_system, swiftest_parameters class(swiftest_body), intent(inout) :: self !! Swiftest body object @@ -432,6 +410,15 @@ module function io_get_args(integrator, param_file_name) result(ierr) integer(I4B) :: ierr !! I/O error code end function io_get_args + module function io_get_token(buffer, ifirst, ilast, ierr) result(token) + implicit none + character(len=*), intent(in) :: buffer !! Input string buffer + integer(I4B), intent(inout) :: ifirst !! Index of the buffer at which to start the search for a token + integer(I4B), intent(out) :: ilast !! Index of the buffer at the end of the returned token + integer(I4B), intent(out) :: ierr !! Error code + character(len=:), allocatable :: token !! Returned token string + end function io_get_token + module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) implicit none class(swiftest_parameters), intent(inout) :: self !! Collection of parameters @@ -682,41 +669,6 @@ module subroutine util_coord_h2b_tp(self, cb) class(swiftest_cb), intent(in) :: cb !! Swiftest central body object end subroutine util_coord_h2b_tp - module subroutine util_copy_body(self, src, mask) - implicit none - class(swiftest_body), intent(inout) :: self !! Swiftest body object to copy into - class(swiftest_base), intent(in) :: src !! Swiftest base object to copy from - logical, dimension(:), intent(in) :: mask !! Mask of elements in src object to copy into self - end subroutine util_copy_body - - module subroutine util_copy_cb(self, src, mask) - implicit none - class(swiftest_cb), intent(inout) :: self !! Swiftest central body object to copy into - class(swiftest_base), intent(in) :: src !! Swiftest base object to copy from - logical, dimension(:), intent(in) :: mask !! Mask of elements in src object to copy into selfk - end subroutine util_copy_cb - - module subroutine util_copy_pl(self, src, mask) - implicit none - class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object to copy into - class(swiftest_base), intent(in) :: src !! Swiftest base object to copy from - logical, dimension(:), intent(in) :: mask !! Mask of elements in src object to copy into self - end subroutine util_copy_pl - - module subroutine util_copy_tp(self, src, mask) - implicit none - class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object to copy into - class(swiftest_base), intent(in) :: src !! Swiftest base object to copy from - logical, dimension(:), intent(in) :: mask !! Mask of elements in src object to copy into self - end subroutine util_copy_tp - - module subroutine util_copy_system(self, src, mask) - implicit none - class(swiftest_nbody_system), intent(inout) :: self !! Swiftest nbody system object to copy into - class(swiftest_base), intent(in) :: src !! Swiftest base object to copy from - logical, dimension(:), intent(in) :: mask !! Mask of elements in src object to copy into self - end subroutine util_copy_system - module subroutine util_fill_body(self, inserts, lfill_list) implicit none class(swiftest_body), intent(inout) :: self !! Swiftest body object diff --git a/src/modules/swiftest_globals.f90 b/src/modules/swiftest_globals.f90 index f738dbad0..91db0adf3 100644 --- a/src/modules/swiftest_globals.f90 +++ b/src/modules/swiftest_globals.f90 @@ -109,9 +109,9 @@ module swiftest_globals character(*), parameter :: ENC_OUTFILE = 'encounter.out' character(*), parameter :: DISCARD_FILE = 'discard.out' character(*), parameter :: ENERGY_FILE = 'energy.out' - character(*), parameter :: CB_INFILE = 'cb_out.dat' - character(*), parameter :: PL_INFILE = 'pl_out.dat' - character(*), parameter :: TP_INFILE = 'tp_out.dat' + character(*), parameter :: CB_INFILE = 'cb.in' + character(*), parameter :: PL_INFILE = 'pl.in' + character(*), parameter :: TP_INFILE = 'tp.in' character(*), parameter :: BIN_OUTFILE = 'bin.dat' integer(I4B), parameter :: BINUNIT = 20 !! File unit number for the binary output file diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 14cf7c7b2..05c2838b6 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -1,61 +1,193 @@ module symba_classes !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott !! - !! Definition of classes and methods specific to the Democratic Heliocentric Method + !! Definition of classes and methods specific to the Democratic SyMBAcentric Method !! Adapted from David E. Kaufmann's Swifter routine: helio.f90 use swiftest_globals - use helio_classes, only : helio_cb, helio_pl, helio_tp, helio_nbody_system + use swiftest_classes, only : swiftest_parameters, swiftest_base + use helio_classes, only : helio_cb, helio_pl, helio_tp, helio_nbody_system implicit none + integer(I4B), parameter :: NENMAX = 32767 + integer(I4B), parameter :: NTENC = 3 + real(DP), parameter :: RHSCALE = 6.5_DP + real(DP), parameter :: RSHELL = 0.48075_DP + character(*), parameter :: PARTICLE_OUTFILE = 'particle.dat' + integer(I4B), parameter :: PARTICLEUNIT = 44 !! File unit number for the binary particle info output file - !******************************************************************************************************************************** - ! symba_nbody_system class definitions and method interfaces - !******************************************************************************************************************************** - type, public, extends(helio_nbody_system) :: symba_nbody_system + type, public, extends(swiftest_parameters) :: symba_parameters + character(STRMAX) :: particle_file = PARTICLE_OUTFILE !! Name of output particle information file + real(DP) :: MTINY = -1.0_DP !! Smallest mass that is fully gravitating + integer(I4B), dimension(:), allocatable :: seed !! Random seeds + logical :: lfragmentation = .false. !! Do fragmentation modeling instead of simple merger. + logical :: lrotation = .false. !! Include rotation states of big bodies + logical :: ltides = .false. !! Include tidal dissipation contains private - procedure, public :: step => symba_step_system !! Advance the SyMBA nbody system forward in time by one step - procedure, public :: interp => symba_step_interp_system !! Perform an interpolation step on the SymBA nbody system - end type symba_nbody_system + procedure, public :: reader => symba_io_param_reader + procedure, public :: writer => symba_io_param_writer + end type symba_parameters !******************************************************************************************************************************** ! symba_cb class definitions and method interfaces !******************************************************************************************************************************* - !> Helio central body particle class + !> SyMBA central body particle class type, public, extends(helio_cb) :: symba_cb + real(DP), dimension(NDIM) :: Ip = 0.0_DP !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. + real(DP), dimension(NDIM) :: rot = 0.0_DP !! Body rotation vector in inertial coordinate frame (units rad / TU) + real(DP) :: k2 = 0.0_DP !! Tidal Love number + real(DP) :: Q = 0.0_DP !! Tidal quality factor + real(DP), dimension(NDIM) :: L0 = 0.0_DP !! Initial angular momentum of the central body + real(DP), dimension(NDIM) :: dL = 0.0_DP !! Change in angular momentum of the central body + real(DP) :: M0 = 0.0_DP !! Initial mass of the central body + real(DP) :: dM = 0.0_DP !! Change in mass of the central body + real(DP) :: R0 = 0.0_DP !! Initial radius of the central body + real(DP) :: dR = 0.0_DP !! Change in the radius of the central body contains private + procedure, public :: initialize => symba_io_read_cb_in !! I/O routine for reading in particle info data + procedure, public :: read_frame => symba_io_read_frame_cb !! I/O routine for reading out a single frame of time-series data for the central bod + procedure, public :: write_frame => symba_io_write_frame_cb !! I/O routine for writing out a single frame of time-series data for the central body end type symba_cb !******************************************************************************************************************************** - ! symba_pl class definitions and method interfaces + ! symba_particle_info class definitions and method interfaces !******************************************************************************************************************************* + !> Class definition for the particle origin information object. This object is used to track time, location, and collisional regime + !> of fragments produced in collisional events. + type, public, extends(swiftest_base) :: symba_particle_info + character(len=32) :: origin_type !! String containing a description of the origin of the particle (e.g. Initial Conditions, Supercatastrophic, Disruption, etc.) + real(DP) :: origin_time !! The time of the particle's formation + real(DP), dimension(NDIM) :: origin_xh !! The heliocentric distance vector at the time of the particle's formation + real(DP), dimension(NDIM) :: origin_vh !! The heliocentric velocity vector at the time of the particle's formation + contains + private + procedure, public :: dump => symba_io_dump_particle_info !! I/O routine for dumping particle info to file + procedure, public :: initialize => symba_io_initialize_particle_info !! I/O routine for reading in particle info data + procedure, public :: read_frame => symba_io_read_frame_info !! I/O routine for reading in a single frame of particle info + procedure, public :: write_frame => symba_io_write_frame_info !! I/O routine for writing out a single frame of particle info + end type symba_particle_info + + !******************************************************************************************************************************** + ! symba_kinship class definitions and method interfaces + !******************************************************************************************************************************* + !> Class definition for the kinship relationships used in bookkeeping multiple collisions bodies in a single time step. + type symba_kinship + integer(I4B) :: parent ! Index of parent particle + integer(I4B) :: nchild ! number of children in merger list + integer(I4B), dimension(:), allocatable :: child ! Index of children particles + end type symba_kinship - !! Helio massive body particle class + !******************************************************************************************************************************** + ! symba_pl class definitions and method interfaces + !******************************************************************************************************************************* + !> SyMBA massive body class type, public, extends(helio_pl) :: symba_pl + real(DP), dimension(:,:), allocatable :: Ip !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). + !! Principal axis rotation assumed. + real(DP), dimension(:,:), allocatable :: rot !! Body rotation vector in inertial coordinate frame (units rad / TU) + real(DP), dimension(:), allocatable :: k2 !! Tidal Love number + real(DP), dimension(:), allocatable :: Q !! Tidal quality factor + logical, dimension(:), allocatable :: lcollision !! flag indicating whether body has merged with another this time step + logical, dimension(:), allocatable :: lencounter !! flag indicating whether body is part of an encounter this time step + integer(I4B), dimension(:), allocatable :: nplenc !! number of encounters with other planets this time step + integer(I4B), dimension(:), allocatable :: ntpenc !! number of encounters with test particles this time step + integer(I4B), dimension(:), allocatable :: levelg !! level at which this body should be moved + integer(I4B), dimension(:), allocatable :: levelm !! deepest encounter level achieved this time step + integer(I4B), dimension(:), allocatable :: isperi !! perihelion passage flag + real(DP), dimension(:), allocatable :: peri !! perihelion distance + real(DP), dimension(:), allocatable :: atp !! semimajor axis following perihelion passage + type(symba_kinship), dimension(:), allocatable :: kin !! Array of merger relationship structures that can account for multiple pairwise mergers in a single step + type(symba_particle_info), dimension(:), allocatable :: info contains private procedure, public :: discard => symba_discard_pl !! Process massive body discards procedure, public :: encounter_check => symba_encounter_check_pl !! Checks if massive bodies are going through close encounters with each other + procedure, public :: read_frame => symba_io_read_frame_pl !! I/O routine for reading out a single frame of time-series data for a massive body + procedure, public :: initialize => symba_io_read_pl_in !! I/O routine for reading in a massive body structure from file with SyMBA-specific parameters + procedure, public :: write_frame => symba_io_write_frame_pl !! I/O routine for writing out a single frame of time-series data for a massive body end type symba_pl !******************************************************************************************************************************** ! symba_tp class definitions and method interfaces !******************************************************************************************************************************* - - !! Helio test particle class + !> SyMBA test particle class type, public, extends(helio_tp) :: symba_tp + integer(I4B), dimension(:), allocatable :: nplenc !! number of encounters with planets this time step + integer(I4B), dimension(:), allocatable :: levelg !! level at which this particle should be moved + integer(I4B), dimension(:), allocatable :: levelm !! deepest encounter level achieved this time step contains private procedure, public :: discard => symba_discard_tp !! process test particle discards procedure, public :: encounter_check => symba_encounter_check_tp !! Checks if any test particles are undergoing a close encounter with a massive body end type symba_tp + !******************************************************************************************************************************** + ! symba_plplenc class definitions and method interfaces + !******************************************************************************************************************************* + !> SyMBA class for tracking pl-pl close encounters in a step + type symba_plplenc + integer(I4B) :: nplplenc !! Total number of pl-pl encounters + logical, dimension(:), allocatable :: lvdotr !! relative vdotr flag + integer(I4B), dimension(:), allocatable :: status !! status of the interaction + integer(I4B), dimension(:), allocatable :: level !! encounter recursion level + integer(I4B), dimension(:), allocatable :: index1 !! position of the first planet in encounter + integer(I4B), dimension(:), allocatable :: index2 !! position of the second planet in encounter + integer(I4B), dimension(:), allocatable :: enc_child !! the child of the encounter + integer(I4B), dimension(:), allocatable :: enc_parent !! the child of the encounter + real(DP), dimension(:,:), allocatable :: xh1 !! the heliocentric position of parent 1 in encounter + real(DP), dimension(:,:), allocatable :: xh2 !! the heliocentric position of parent 2 in encounter + real(DP), dimension(:,:), allocatable :: vb1 !! the barycentric velocity of parent 1 in encounter + real(DP), dimension(:,:), allocatable :: vb2 !! the barycentric velocity of parent 2 in encounter + end type symba_plplenc + + !******************************************************************************************************************************** + ! symba_pltpenc class definitions and method interfaces + !******************************************************************************************************************************* + !> SyMBA class for tracking pl-tp close encounters in a step + type symba_pltpenc + integer(I4B) :: npltpenc !! Total number of pl-tp encounters + logical, dimension(:), allocatable :: lvdotr !! relative vdotr flag + integer(I4B), dimension(:), allocatable :: status !! status of the interaction + integer(I4B), dimension(:), allocatable :: level !! encounter recursion level + integer(I4B), dimension(:), allocatable :: indexpl !! position of the planet in encounter + integer(I4B), dimension(:), allocatable :: indextp !! position of the test particle in encounter + end type symba_pltpenc + + !******************************************************************************************************************************** + ! symba_merger class definitions and method interfaces + !******************************************************************************************************************************* + !> SyMBA class for tracking pl-pl mergers in a step + type symba_merger + integer(I4B), dimension(:), allocatable :: id !! identifier + integer(I4B), dimension(:), allocatable :: index_ps !! position of the particle + integer(I4B), dimension(:), allocatable :: status !! status + integer(I4B), dimension(:), allocatable :: nadded !! number of resultant bodies from this collisional event aka number of fragments + real(DP), dimension(:,:), allocatable :: xb !! barycentric position + real(DP), dimension(:,:), allocatable :: vb !! barycentric velocity + real(DP), dimension(:), allocatable :: mass !! mass + real(DP), dimension(:), allocatable :: radius ! radius + real(DP), dimension(:,:), allocatable :: IP ! moment of intertia + real(DP), dimension(:,:), allocatable :: rot ! rotation + type(symba_particle_info), dimension(:), allocatable :: info + end type symba_merger + + !******************************************************************************************************************************** + ! symba_nbody_system class definitions and method interfaces + !******************************************************************************************************************************** + type, public, extends(helio_nbody_system) :: symba_nbody_system + contains + private + procedure, public :: step => symba_step_system !! Advance the SyMBA nbody system forward in time by one step + procedure, public :: interp => symba_step_interp_system !! Perform an interpolation step on the SymBA nbody system + end type symba_nbody_system + + interface module subroutine symba_discard_pl(self, system, param) use swiftest_classes, only : swiftest_nbody_system, swiftest_parameters implicit none - class(symba_pl), intent(inout) :: self !! RMVS test particle object + class(symba_pl), intent(inout) :: self !! SyMBA test particle object class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine symba_discard_pl @@ -63,31 +195,137 @@ end subroutine symba_discard_pl module subroutine symba_discard_tp(self, system, param) use swiftest_classes, only : swiftest_nbody_system, swiftest_parameters implicit none - class(symba_tp), intent(inout) :: self !! RMVS test particle object + class(symba_tp), intent(inout) :: self !! SyMBA test particle object class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine symba_discard_tp module function symba_encounter_check_pl(self, system, dt) result(lencounter) implicit none - class(symba_pl), intent(inout) :: self !! RMVS test particle object - class(symba_nbody_system), intent(inout) :: system !! RMVS nbody system object + class(symba_pl), intent(inout) :: self !! SyMBA test particle object + class(symba_nbody_system), intent(inout) :: system !! SyMBA nbody system object real(DP), intent(in) :: dt !! step size logical :: lencounter !! Returns true if there is at least one close encounter end function symba_encounter_check_pl module function symba_encounter_check_tp(self, system, dt) result(lencounter) implicit none - class(symba_tp), intent(inout) :: self !! RMVS test particle object - class(symba_nbody_system), intent(inout) :: system !! RMVS nbody system object + class(symba_tp), intent(inout) :: self !! SyMBA test particle object + class(symba_nbody_system), intent(inout) :: system !! SyMBA nbody system object real(DP), intent(in) :: dt !! step size logical :: lencounter !! Returns true if there is at least one close encounter end function symba_encounter_check_tp + module subroutine symba_io_dump_particle_info(self, param, msg) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_particle_info), intent(inout) :: self !! Swiftest base object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + character(*), optional, intent(in) :: msg !! Message to display with dump operation + end subroutine symba_io_dump_particle_info + + module subroutine symba_io_param_reader(self, unit, iotype, v_list, iostat, iomsg) + implicit none + class(symba_parameters), intent(inout) :: self !! Collection of parameters + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + !! If you do not include a char-literal-constant, the iotype argument contains only DT. + integer, intent(in) :: v_list(:) !! The first element passes the integrator code to the reader + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + end subroutine symba_io_param_reader + + module subroutine symba_io_param_writer(self, unit, iotype, v_list, iostat, iomsg) + implicit none + class(symba_parameters),intent(in) :: self !! Collection of SyMBA parameters + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + !! If you do not include a char-literal-constant, the iotype argument contains only DT. + integer, intent(in) :: v_list(:) !! Not used in this procedure + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + end subroutine symba_io_param_writer + + module subroutine symba_io_initialize_particle_info(self, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_particle_info), intent(inout) :: self !! SyMBA particle info object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + end subroutine symba_io_initialize_particle_info + + module subroutine symba_io_read_cb_in(self, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_cb), intent(inout) :: self + class(swiftest_parameters), intent(inout) :: param + end subroutine symba_io_read_cb_in + + module subroutine symba_io_read_frame_cb(self, iu, param, form, ierr) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_cb), intent(inout) :: self !! Swiftest central body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + end subroutine symba_io_read_frame_cb + + module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_particle_info), intent(inout) :: self !! SyMBA particle info object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + end subroutine symba_io_read_frame_info + + module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_pl), intent(inout) :: self !! Swiftest particle object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + end subroutine symba_io_read_frame_pl + + + module subroutine symba_io_read_pl_in(self, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_pl), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + end subroutine symba_io_read_pl_in + + module subroutine symba_io_write_frame_cb(self, iu, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_cb), intent(in) :: self !! SyMBA massive body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_io_write_frame_cb + + module subroutine symba_io_write_frame_info(self, iu, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_particle_info), intent(in) :: self !! SyMBA particle info object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_io_write_frame_info + + module subroutine symba_io_write_frame_pl(self, iu, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_pl), intent(in) :: self !! SyMBA massive body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_io_write_frame_pl + module subroutine symba_step_system(self, param, t, dt) use swiftest_classes, only : swiftest_parameters implicit none - class(symba_nbody_system), intent(inout) :: self !! RMVS nbody system object + class(symba_nbody_system), intent(inout) :: self !! SyMBA nbody system object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters real(DP), intent(in) :: t !! Simulation time real(DP), intent(in) :: dt !! Current stepsize @@ -96,7 +334,7 @@ end subroutine symba_step_system module subroutine symba_step_interp_system(self, param, t, dt) use swiftest_classes, only : swiftest_parameters implicit none - class(symba_nbody_system), intent(inout) :: self !! RMVS nbody system object + class(symba_nbody_system), intent(inout) :: self !! SyMBA nbody system object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters real(DP), intent(in) :: t !! Simulation time real(DP), intent(in) :: dt !! Current stepsize diff --git a/src/rmvs/rmvs_discard.f90 b/src/rmvs/rmvs_discard.f90 index 6dacd7969..14613724e 100644 --- a/src/rmvs/rmvs_discard.f90 +++ b/src/rmvs/rmvs_discard.f90 @@ -22,7 +22,7 @@ module subroutine rmvs_discard_tp(self, system, param) if ((tp%status(i) == ACTIVE) .and. (tp%lperi(i))) then if ((tp%peri(i) < pl%radius(iplperP))) then tp%status(i) = DISCARDED_PLQ - write(*, *) "Particle ",tp%name(i)," q with respect to Planet ",pl%name(iplperP)," is too small at t = ",t + write(*, *) "Particle ",tp%id(i)," q with respect to Planet ",pl%id(iplperP)," is too small at t = ",t tp%ldiscard(i) = .true. end if end if diff --git a/src/rmvs/rmvs_step.f90 b/src/rmvs/rmvs_step.f90 index 71091f6dd..035783901 100644 --- a/src/rmvs/rmvs_step.f90 +++ b/src/rmvs/rmvs_step.f90 @@ -100,7 +100,7 @@ subroutine rmvs_interp_out(cb, pl, dt) if (any(iflag(1:npl) /= 0)) then do i = 1, npl if (iflag(i) /= 0) then - write(*, *) " Planet ", pl%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", pl%id(i), " is lost!!!!!!!!!!" write(*, *) GMcb(i), dto(i) write(*, *) xtmp(:,i) write(*, *) vtmp(:,i) @@ -122,7 +122,7 @@ subroutine rmvs_interp_out(cb, pl, dt) if (any(iflag(1:npl) /= 0)) then do i = 1, npl if (iflag(i) /= 0) then - write(*, *) " Planet ", pl%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", pl%id(i), " is lost!!!!!!!!!!" write(*, *) GMcb(i), -dto(i) write(*, *) xtmp(:,i) write(*, *) vtmp(:,i) @@ -254,7 +254,7 @@ subroutine rmvs_interp_in(cb, pl, system, param, dt, outer_index) if (any(iflag(1:npl) /= 0)) then do i = 1, npl if (iflag(i) /=0) then - write(*, *) " Planet ", pl%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", pl%id(i), " is lost!!!!!!!!!!" write(*, *) GMcb(i), dti(i) write(*, *) xtmp(:,i) write(*, *) vtmp(:,i) @@ -278,7 +278,7 @@ subroutine rmvs_interp_in(cb, pl, system, param, dt, outer_index) if (any(iflag(1:npl) /= 0)) then do i = 1, npl if (iflag(i) /=0) then - write(*, *) " Planet ", pl%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", pl%id(i), " is lost!!!!!!!!!!" write(*, *) GMcb(i), -dti(i) write(*, *) xtmp(:,i) write(*, *) vtmp(:,i) @@ -413,7 +413,7 @@ subroutine rmvs_make_planetocentric(cb, pl, tp) tpenci%ipleP = i tpenci%status(:) = ACTIVE ! Grab all the encountering test particles and convert them to a planetocentric frame - tpenci%name(:) = pack(tp%name(:), encmask(:)) + tpenci%id(:) = pack(tp%id(:), encmask(:)) do j = 1, NDIM tpenci%xheliocentric(j, :) = pack(tp%xh(j,:), encmask(:)) tpenci%xh(j, :) = tpenci%xheliocentric(j, :) - pl%inner(0)%x(j, i) @@ -498,11 +498,11 @@ subroutine rmvs_peri_tp(tp, pl, t, dt, lfirst, inner_index, ipleP, param) r2 = dot_product(xpc(:, i), xpc(:, i)) if ((abs(tperi) > FACQDT * dt) .or. (r2 > rhill2)) peri = sqrt(r2) if (param%encounter_file /= "") then - id1 = pl%name(ipleP) + id1 = pl%id(ipleP) rpl = pl%radius(ipleP) xh1(:) = pl%inner(inner_index)%x(:, ipleP) vh1(:) = pl%inner(inner_index)%v(:, ipleP) - id2 = tp%name(i) + id2 = tp%id(i) xh2(:) = xpc(:, i) + xh1(:) vh2(:) = xpc(:, i) + vh1(:) call io_write_encounter(t, id1, id2, mu, 0.0_DP, rpl, 0.0_DP, xh1(:), xh2(:), vh1(:), vh2(:), & diff --git a/src/setup/setup.f90 b/src/setup/setup.f90 index 0f16e7c5b..a64f64a15 100644 --- a/src/setup/setup.f90 +++ b/src/setup/setup.f90 @@ -72,7 +72,7 @@ module subroutine setup_body(self,n) self%lfirst = .true. !write(*,*) 'Allocating the basic Swiftest particle' - allocate(self%name(n)) + allocate(self%id(n)) allocate(self%status(n)) allocate(self%ldiscard(n)) allocate(self%xh(NDIM, n)) @@ -90,7 +90,7 @@ module subroutine setup_body(self,n) allocate(self%capm(n)) allocate(self%mu(n)) - self%name(:) = 0 + self%id(:) = 0 self%status(:) = INACTIVE self%ldiscard(:) = .false. self%xh(:,:) = 0.0_DP @@ -131,20 +131,12 @@ module subroutine setup_pl(self,n) allocate(self%rhill(n)) allocate(self%radius(n)) allocate(self%density(n)) - allocate(self%Ip(NDIM, n)) - allocate(self%rot(NDIM, n)) - allocate(self%k2(n)) - allocate(self%Q(n)) self%mass(:) = 0.0_DP self%Gmass(:) = 0.0_DP self%rhill(:) = 0.0_DP self%radius(:) = 0.0_DP self%density(:) = 0.0_DP - self%Ip(:,:) = 0.0_DP - self%rot(:,:) = 0.0_DP - self%k2(:) = 0.0_DP - self%Q(:) = 0.0_DP self%num_comparisons = 0 return end subroutine setup_pl diff --git a/src/symba/symba_io.f90 b/src/symba/symba_io.f90 new file mode 100644 index 000000000..70123d5bd --- /dev/null +++ b/src/symba/symba_io.f90 @@ -0,0 +1,470 @@ +submodule (symba_classes) s_symba_io + use swiftest +contains + module subroutine symba_io_dump_particle_info(self, param, msg) + !! author: David A. Minton + !! + !! Dumps the particle information data to a file + implicit none + class(symba_particle_info), intent(inout) :: self !! Swiftest base object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + character(*), optional, intent(in) :: msg !! Message to display with dump operation + end subroutine symba_io_dump_particle_info + + module subroutine symba_io_initialize_particle_info(self, param) + !! author: David A. Minton + !! + !! Initializes a particle info data structure, either starting a new one or reading one in + !! from a file if it is a restarted run + implicit none + class(symba_particle_info), intent(inout) :: self !! SyMBA particle info object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + end subroutine symba_io_initialize_particle_info + + module subroutine symba_io_param_reader(self, unit, iotype, v_list, iostat, iomsg) + !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott + !! + !! Read in parameters specific to the SyMBA integrator, then calls the base io_param_reader. + !! + !! Adapted from David E. Kaufmann's Swifter routine io_init_param.f90 + !! Adapted from Martin Duncan's Swift routine io_init_param.f + implicit none + ! Arguments + class(symba_parameters), intent(inout) :: self !! Collection of parameters + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + !! If you do not include a char-literal-constant, the iotype argument contains only DT. + integer, intent(in) :: v_list(:) !! The first element passes the integrator code to the reader + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + ! internals + integer(I4B) :: ilength, ifirst, ilast !! Variables used to parse input file + character(STRMAX) :: line !! Line of the input file + character (len=:), allocatable :: line_trim,param_name, param_value !! Strings used to parse the param file + integer(I4B) :: nseeds, nseeds_from_file, i + logical :: seed_set = .false. !! Is the random seed set in the input file? + character(len=*),parameter :: linefmt = '(A)' + + associate(param => self) + call io_param_reader(param, unit, iotype, v_list, iostat, iomsg) + + call random_seed(size = nseeds) + if (allocated(param%seed)) deallocate(param%seed) + allocate(param%seed(nseeds)) + do + read(unit = unit, fmt = linefmt, iostat = iostat, end = 1) line + line_trim = trim(adjustl(line)) + ilength = len(line_trim) + if ((ilength /= 0)) then + ifirst = 1 + ! Read the pair of tokens. The first one is the parameter name, the second is the value. + param_name = io_get_token(line_trim, ifirst, ilast, iostat) + if (param_name == '') cycle ! No parameter name (usually because this line is commented out) + call util_toupper(param_name) + ifirst = ilast + 1 + param_value = io_get_token(line_trim, ifirst, ilast, iostat) + select case (param_name) + case ("FRAGMENTATION") + call util_toupper(param_value) + if (param_value == "YES" .or. param_value == "T") self%lfragmentation = .true. + case ("ROTATION") + call util_toupper(param_value) + if (param_value == "YES" .or. param_value == 'T') self%lrotation = .true. + case ("TIDES") + call util_toupper(param_value) + if (param_value == "YES" .or. param_value == 'T') self%ltides = .true. + case ("MTINY") + read(param_value, *) param%mtiny + case("SEED") + read(param_value, *) nseeds_from_file + ! Because the number of seeds can vary between compilers/systems, we need to make sure we can handle cases in which the input file has a different + ! number of seeds than the current system. If the number of seeds in the file is smaller than required, we will use them as a source to fill in the missing elements. + ! If the number of seeds in the file is larger than required, we will truncate the seed array. + if (nseeds_from_file > nseeds) then + nseeds = nseeds_from_file + deallocate(param%seed) + allocate(param%seed(nseeds)) + do i = 1, nseeds + ifirst = ilast + 1 + param_value = io_get_token(line, ifirst, ilast, iostat) + read(param_value, *) param%seed(i) + end do + else ! Seed array in file is too small + do i = 1, nseeds_from_file + ifirst = ilast + 1 + param_value = io_get_token(line, ifirst, ilast, iostat) + read(param_value, *) param%seed(i) + end do + param%seed(nseeds_from_file+1:nseeds) = [(param%seed(1) - param%seed(nseeds_from_file) + i, i=nseeds_from_file+1, nseeds)] + end if + seed_set = .true. + end select + end if + end do + 1 continue + + write(*,*) "FRAGMENTATION = ", param%lfragmentation + if (param%lfragmentation) then + if (seed_set) then + call random_seed(put = param%seed) + else + call random_seed(get = param%seed) + end if + write(*,*) "SEED: N,VAL = ",size(param%seed), param%seed(:) + end if + write(*,*) "ROTATION = ", param%lrotation + write(*,*) "TIDES = ", param%ltides + + if (self%mtiny < 0.0_DP) then + write(iomsg,*) "MTINY invalid or not set: ", self%mtiny + iostat = -1 + return + else + write(*,*) "MTINY = ", self%mtiny + end if + + if (.not.self%lclose) then + write(iomsg,*) 'This integrator requires CHK_CLOSE to be enabled.' + iostat = -1 + return + end if + end associate + return + + end subroutine symba_io_param_reader + + module subroutine symba_io_param_writer(self, unit, iotype, v_list, iostat, iomsg) + !! author: David A. Minton + !! + !! Dump integration parameters specific to SyMBA to file and then call the base io_param_writer method. + !! + !! Adapted from David E. Kaufmann's Swifter routine io_dump_param.f90 + !! Adapted from Martin Duncan's Swift routine io_dump_param.f + implicit none + ! Arguments + class(symba_parameters),intent(in) :: self !! Collection of SyMBA parameters + integer, intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + !! If you do not include a char-literal-constant, the iotype argument contains only DT. + integer, intent(in) :: v_list(:) !! Not used in this procedure + integer, intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + ! Internals + character(*),parameter :: Ifmt = '(I0)' !! Format label for integer values + character(*),parameter :: Rfmt = '(ES25.17)' !! Format label for real values + character(*),parameter :: Rarrfmt = '(3(ES25.17,1X))' !! Format label for real values + character(*),parameter :: Lfmt = '(L1)' !! Format label for logical values + character(len=*), parameter :: Afmt = '(A25,1X,64(:,A25,1X))' + character(256) :: param_name, param_value + type character_array + character(25) :: value + end type character_array + type(character_array), dimension(:), allocatable :: param_array + integer(I4B) :: i + + associate(param => self) + call io_param_writer(param, unit, iotype, v_list, iostat, iomsg) + + ! Special handling is required for writing the random number seed array as its size is not known until runtime + ! For the "SEED" parameter line, the first value will be the size of the seed array and the rest will be the seed array elements + write(param_name, Afmt) "PARTICLE_FILE"; write(param_value, Afmt) trim(adjustl(param%particle_file)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "MTINY"; write(param_value, Rfmt) param%mtiny; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "ROTATION"; write(param_value, Lfmt) param%lrotation; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "TIDES"; write(param_value, Lfmt) param%ltides; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "FRAGMENTATION"; write(param_value, Lfmt) param%lfragmentation; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + if (param%lfragmentation) then + write(param_name, Afmt) "SEED" + if (allocated(param_array)) deallocate(param_array) + allocate(param_array(0:size(param%seed))) + write(param_array(0)%value, Ifmt) size(param%seed) + do i = 1, size(param%seed) + write(param_array(i)%value, Ifmt) param%seed(i) + end do + write(unit, Afmt, advance='no') adjustl(param_name), adjustl(param_array(0)%value) + do i = 1, size(param%seed) + if (i < size(param%seed)) then + write(unit, Afmt, advance='no') adjustl(param_array(i)%value) + else + write(unit, Afmt) adjustl(param_array(i)%value) + end if + end do + end if + + iostat = 0 + end associate + + return + + end subroutine symba_io_param_writer + + module subroutine symba_io_read_frame_cb(self, iu, param, form, ierr) + !! author: David A. Minton + !! + !! Reads a frame of output of central body data to the binary output file + !! + !! Adapted from David E. Kaufmann's Swifter routine io_read_frame.f90 + !! Adapted from Hal Levison's Swift routine io_read_frame.F + implicit none + ! Arguments + class(symba_cb), intent(inout) :: self !! Swiftest central body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + + call io_read_frame_cb(self, iu, param, form, ierr) + select type(param) + class is (symba_parameters) + if (param%lrotation) then + read(iu, iostat = ierr) self%Ip(:) + read(iu, iostat = ierr) self%rot(:) + end if + if (param%ltides) then + read(iu, iostat = ierr) self%k2 + read(iu, iostat = ierr) self%Q + end if + end select + if (ierr /=0) then + write(*,*) 'Error reading SyMBA central body data' + call util_exit(FAILURE) + end if + return + end subroutine symba_io_read_frame_cb + + module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) + !! author: David A. Minton + !! + !! Reads a frame of output of a SyMBA massive body object + !! + !! Adapted from David E. Kaufmann's Swifter routine io_read_frame.f90 + !! Adapted from Hal Levison's Swift routine io_read_frame.F + implicit none + ! Arguments + class(symba_pl), intent(inout) :: self !! Swiftest particle object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + + call io_read_frame_body(self, iu, param, form, ierr) + select type(param) + class is (symba_parameters) + associate(pl => self, npl => self%nbody) + if (param%lrotation) then + read(iu, iostat = ierr) pl%rot(1, 1:npl) + read(iu, iostat = ierr) pl%rot(2, 1:npl) + read(iu, iostat = ierr) pl%rot(3, 1:npl) + read(iu, iostat = ierr) pl%Ip(1, 1:npl) + read(iu, iostat = ierr) pl%Ip(2, 1:npl) + read(iu, iostat = ierr) pl%Ip(3, 1:npl) + end if + if (param%ltides) then + read(iu, iostat = ierr) pl%k2(1:npl) + read(iu, iostat = ierr) pl%Q(1:npl) + end if + end associate + end select + + if (ierr /=0) then + write(*,*) 'Error reading SyMBA massive body body data' + call util_exit(FAILURE) + end if + return + end subroutine symba_io_read_frame_pl + + subroutine symba_io_read_frame_info(self, iu, param, form, ierr) + !! author: David A. Minton + !! + !! Reads a single frame of a particle info data from a file. + implicit none + class(symba_particle_info), intent(inout) :: self !! SyMBA particle info object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + character(*), intent(in) :: form !! Input format code ("XV" or "EL") + integer(I4B), intent(out) :: ierr !! Error code + end subroutine symba_io_read_frame_info + + module subroutine symba_io_read_cb_in(self, param) + !! author: David A. Minton + !! + !! Reads in central body data + !! + !! Adapted from David E. Kaufmann's Swifter routine swiftest_init_pl.f90 + !! Adapted from Martin Duncan's Swift routine swiftest_init_pl.f + implicit none + ! Arguments + class(symba_cb), intent(inout) :: self + class(swiftest_parameters), intent(inout) :: param + ! Internals + integer(I4B), parameter :: LUN = 7 !! Unit number of input file + integer(I4B) :: iu = LUN + integer(I4B) :: ierr + logical :: is_ascii + real(DP) :: t + real(QP) :: val + + select type(param) + class is (symba_parameters) + ierr = 0 + is_ascii = (param%in_type == 'ASCII') + if (is_ascii) then + open(unit = iu, file = param%incbfile, status = 'old', form = 'FORMATTED', iostat = ierr) + read(iu, *, iostat = ierr) val + self%Gmass = real(val, kind=DP) + self%mass = real(val / param%GU, kind=DP) + read(iu, *, iostat = ierr) self%radius + read(iu, *, iostat = ierr) self%j2rp2 + read(iu, *, iostat = ierr) self%j4rp4 + if (param%lrotation) then + read(iu, *, iostat = ierr) self%Ip(:) + read(iu, *, iostat = ierr) self%rot(:) + end if + if (param%ltides) then + read(iu, *, iostat = ierr) self%k2 + read(iu, *, iostat = ierr) self%Q + end if + else + open(unit = iu, file = param%incbfile, status = 'old', form = 'UNFORMATTED', iostat = ierr) + call self%read_frame(iu, param, XV, ierr) + end if + close(iu) + if (ierr /= 0) then + write(*,*) 'Error opening massive body initial conditions file ',trim(adjustl(param%incbfile)) + call util_exit(FAILURE) + end if + if (self%j2rp2 /= 0.0_DP) param%loblatecb = .true. + end select + + return + end subroutine symba_io_read_cb_in + + module subroutine symba_io_read_pl_in(self, param) + !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott + !! + !! Read in either test particle or massive body data + !! + !! Adapted from David E. Kaufmann's Swifter routine swiftest_init_pl.f90 and swiftest_init_tp.f90 + !! Adapted from Martin Duncan's Swift routine swiftest_init_pl.f and swiftest_init_tp.f + implicit none + ! Arguments + class(symba_pl), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + ! Internals + integer(I4B), parameter :: LUN = 7 !! Unit number of input file + integer(I4B) :: iu = LUN + integer(I4B) :: i, ierr, nbody + logical :: is_ascii + character(len=:), allocatable :: infile + real(DP) :: t + real(QP) :: val + + select type(param) + class is (symba_parameters) + ierr = 0 + is_ascii = (param%in_type == 'ASCII') + select case(param%in_type) + case(ASCII_TYPE) + open(unit = iu, file = infile, status = 'old', form = 'FORMATTED', iostat = ierr) + read(iu, *, iostat = ierr) nbody + call self%setup(nbody) + if (nbody > 0) then + do i = 1, nbody + read(iu, *, iostat = ierr) self%id(i), val + self%mass(i) = real(val / param%GU, kind=DP) + self%Gmass(i) = real(val, kind=DP) + read(iu, *, iostat = ierr) self%radius(i) + if (param%lrotation) then + read(iu, iostat = ierr) self%Ip(:, i) + read(iu, iostat = ierr) self%rot(:, i) + end if + if (param%ltides) then + read(iu, iostat = ierr) self%k2(i) + read(iu, iostat = ierr) self%Q(i) + end if + if (ierr /= 0 ) exit + read(iu, *, iostat = ierr) self%xh(1, i), self%xh(2, i), self%xh(3, i) + read(iu, *, iostat = ierr) self%vh(1, i), self%vh(2, i), self%vh(3, i) + if (ierr /= 0 ) exit + self%status(i) = ACTIVE + end do + end if + case (REAL4_TYPE, REAL8_TYPE) + open(unit = iu, file = infile, status = 'old', form = 'UNFORMATTED', iostat = ierr) + read(iu, iostat = ierr) nbody + call self%setup(nbody) + if (nbody > 0) then + call self%read_frame(iu, param, XV, ierr) + self%status(:) = ACTIVE + end if + case default + write(*,*) trim(adjustl(param%in_type)) // ' is an unrecognized file type' + ierr = -1 + end select + close(iu) + if (ierr /= 0 ) then + write(*,*) 'Error reading in initial conditions from ',trim(adjustl(infile)) + call util_exit(FAILURE) + end if + end select + + return + end subroutine symba_io_read_pl_in + + subroutine symba_io_write_frame_cb(self, iu, param) + !! author: David A. Minton + !! + !! Writes a single frame of a SyMBA pl file + implicit none + class(symba_cb), intent(in) :: self !! SyMBA massive body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + + call io_write_frame_cb(self, iu, param) + select type(param) + class is (symba_parameters) + if (param%lrotation) then + write(iu) self%rot(1) + write(iu) self%rot(2) + write(iu) self%rot(3) + write(iu) self%Ip(1) + write(iu) self%Ip(2) + write(iu) self%Ip(3) + end if + if (param%ltides) then + write(iu) self%k2 + write(iu) self%Q + end if + end select + end subroutine symba_io_write_frame_cb + + subroutine symba_io_write_frame_pl(self, iu, param) + !! author: David A. Minton + !! + !! Writes a single frame of a SyMBA pl file + implicit none + class(symba_pl), intent(in) :: self !! SyMBA massive body object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + + call io_write_frame_body(self, iu, param) + select type(param) + class is (symba_parameters) + associate(pl => self, npl => self%nbody) + if (param%lrotation) then + write(iu) pl%rot(1, 1:npl) + write(iu) pl%rot(2, 1:npl) + write(iu) pl%rot(3, 1:npl) + write(iu) pl%Ip(1, 1:npl) + write(iu) pl%Ip(2, 1:npl) + write(iu) pl%Ip(3, 1:npl) + end if + if (param%ltides) then + write(iu) pl%k2(1:npl) + write(iu) pl%Q(1:npl) + end if + end associate + end select + end subroutine symba_io_write_frame_pl + +end submodule s_symba_io + diff --git a/src/util/util_copy.f90 b/src/util/util_copy.f90 deleted file mode 100644 index 9731e9eff..000000000 --- a/src/util/util_copy.f90 +++ /dev/null @@ -1,154 +0,0 @@ -submodule (swiftest_classes) s_util_copy - use swiftest -contains - module procedure util_copy_cb - !! author: David A. Minton - !! - !! Copies elements of one Swiftest central body object to another. The mask is ignored for this case - !! - implicit none - select type(src) - class is(swiftest_cb) - self%mass = src%mass - self%Gmass = src%Gmass - self%radius = src%radius - self%density = src%density - self%j2rp2 = src%j2rp2 - self%j4rp4 = src%j4rp4 - self%aobl = src%aobl - self%xb = src%xb - self%vb = src%vb - self%Ip = src%Ip - self%rot = src%rot - self%k2 = src%k2 - self%Q = src%Q - class default - write(*,*) 'Error copying swiftest_cb object. Incompatible type.' - call util_exit(FAILURE) - end select - return - end procedure util_copy_cb - - module procedure util_copy_body - !! author: David A. Minton - !! - !! Copies elements of one Swiftest generic body object to another. The elements are determined by a mask. - !! - implicit none - - select type(src) - class is(swiftest_body) - where (mask(:)) - self%name(:) = src%name(:) - self%status(:) = src%status(:) - self%ldiscard(:) = src%ldiscard(:) - self%xh(1,:) = src%xh(1,:) - self%xh(2,:) = src%xh(2,:) - self%xh(3,:) = src%xh(3,:) - self%vh(1,:) = src%vh(1,:) - self%vh(2,:) = src%vh(2,:) - self%vh(3,:) = src%vh(3,:) - self%xb(1,:) = src%xb(1,:) - self%xb(2,:) = src%xb(2,:) - self%xb(3,:) = src%xb(3,:) - self%vb(1,:) = src%vb(1,:) - self%vb(2,:) = src%vb(2,:) - self%vb(3,:) = src%vb(3,:) - self%ah(1,:) = src%ah(1,:) - self%ah(2,:) = src%ah(2,:) - self%ah(3,:) = src%ah(3,:) - self%aobl(1,:) = src%aobl(1,:) - self%aobl(3,:) = src%aobl(2,:) - self%aobl(2,:) = src%aobl(3,:) - self%ir3h(:) = src%ir3h(:) - self%a(:) = src%a(:) - self%e(:) = src%e(:) - self%inc(:) = src%inc(:) - self%capom(:) = src%capom(:) - self%omega(:) = src%omega(:) - self%capm(:) = src%capm(:) - self%mu(:) = src%mu(:) - end where - class default - write(*,*) 'Error copying swiftest_body object. Incompatible type.' - call util_exit(FAILURE) - end select - - end procedure util_copy_body - - module procedure util_copy_pl - !! author: David A. Minton - !! - !! Copies elements of one Swiftest massive body object to another. The elements are determined by a mask. - !! - implicit none - select type(src) - class is(swiftest_pl) - where (mask(:)) - self%mass(:) = src%mass(:) - self%Gmass(:) = src%Gmass(:) - self%rhill(:) = src%rhill(:) - self%radius(:) = src%radius(:) - self%density(:) = src%density(:) - self%Ip(1,:) = src%Ip(1,:) - self%Ip(2,:) = src%Ip(2,:) - self%Ip(3,:) = src%Ip(3,:) - self%rot(1,:) = src%rot(1,:) - self%rot(2,:) = src%rot(2,:) - self%rot(3,:) = src%rot(3,:) - self%k2(:) = src%k2(:) - self%Q(:) = src%Q(:) - end where - call util_copy_body(self, src, mask) - class default - write(*,*) 'Error copying swiftest_pl object. Incompatible type.' - call util_exit(FAILURE) - end select - - end procedure util_copy_pl - - module procedure util_copy_tp - !! author: David A. Minton - !! - !! Copies elements of one swiftest test particle object to another. The elements are determined by a mask. - implicit none - - select type(src) - class is(swiftest_tp) - where (mask(:)) - self%isperi(:) = src%isperi(:) - self%peri(:) = src%peri(:) - self%atp(:) = src%atp(:) - end where - call util_copy_body(self, src, mask) - class default - write(*,*) 'Error copying swiftest_tp object. Incompatible type.' - call util_exit(FAILURE) - end select - - return - end procedure util_copy_tp - - module procedure util_copy_system - !! author: David A. Minton - !! - !! Copies elements of one Swiftest nbody system object to another. The elements are determined by a mask. - !! In this case the mask contains the pl elements followed by the tp elements. - !! - implicit none - - associate(pl => self%pl, tp => self%tp, npl => self%pl%nbody, ntp => self%tp%nbody) - - select type(src) - class is(swiftest_nbody_system) - call pl%copy(src%pl, mask(1:npl)) - call tp%copy(src%tp, mask(npl+1:npl+ntp)) - class default - write(*,*) 'Error copying swiftest_nbody_system object. Incompatible type.' - call util_exit(FAILURE) - end select - - - end associate - end procedure util_copy_system -end submodule s_util_copy \ No newline at end of file diff --git a/src/util/util_spill_and_fill.f90 b/src/util/util_spill_and_fill.f90 index da00ae72a..4513e5b24 100644 --- a/src/util/util_spill_and_fill.f90 +++ b/src/util/util_spill_and_fill.f90 @@ -17,7 +17,7 @@ module subroutine util_spill_body(self, discards, lspill_list) ! For each component, pack the discarded bodies into the discard object and do the inverse with the keeps !> Spill all the common components associate(keeps => self) - discards%name(:) = pack(keeps%name(:), lspill_list(:)) + discards%id(:) = pack(keeps%id(:), lspill_list(:)) discards%status(:) = pack(keeps%status(:), lspill_list(:)) discards%a(:) = pack(keeps%a(:), lspill_list(:)) discards%e(:) = pack(keeps%e(:), lspill_list(:)) @@ -34,7 +34,7 @@ module subroutine util_spill_body(self, discards, lspill_list) discards%aobl(i, :) = pack(keeps%aobl(i, :), lspill_list(:)) end do if (count(.not.lspill_list(:)) > 0) then - keeps%name(:) = pack(keeps%name(:), .not. lspill_list(:)) + keeps%id(:) = pack(keeps%id(:), .not. lspill_list(:)) keeps%status(:) = pack(keeps%status(:), .not. lspill_list(:)) keeps%a(:) = pack(keeps%a(:), .not. lspill_list(:)) keeps%e(:) = pack(keeps%e(:), .not. lspill_list(:)) @@ -82,10 +82,10 @@ module subroutine util_fill_body(self, inserts, lfill_list) ! For each component, pack the discarded bodies into the discard object and do the inverse with the keeps !> Spill all the common components - associate(keeps => self, insname => inserts%name, keepname => self%name) + associate(keeps => self, insname => inserts%id, keepname => self%id) - keeps%name(:) = unpack(keeps%name(:), .not.lfill_list(:), keeps%name(:)) - keeps%name(:) = unpack(inserts%name(:), lfill_list(:), keeps%name(:)) + keeps%id(:) = unpack(keeps%id(:), .not.lfill_list(:), keeps%id(:)) + keeps%id(:) = unpack(inserts%id(:), lfill_list(:), keeps%id(:)) keeps%status(:) = unpack(keeps%status(:), .not.lfill_list(:), keeps%status(:)) keeps%status(:) = unpack(inserts%status(:), lfill_list(:), keeps%status(:)) @@ -137,7 +137,7 @@ module subroutine util_fill_body(self, inserts, lfill_list) ! This is the base class, so will be the last to be called in the cascade. - keeps%nbody = size(keeps%name(:)) + keeps%nbody = size(keeps%id(:)) end associate end subroutine util_fill_body @@ -161,24 +161,12 @@ end subroutine util_fill_body discards%rhill(:) = pack(keeps%rhill(:), lspill_list(:)) discards%radius(:) = pack(keeps%radius(:), lspill_list(:)) discards%density(:) = pack(keeps%density(:), lspill_list(:)) - discards%k2(:) = pack(keeps%k2(:), lspill_list(:)) - discards%Q(:) = pack(keeps%Q(:), lspill_list(:)) - do i = 1, NDIM - discards%Ip(i, :) = pack(keeps%Ip(i, :), lspill_list(:)) - discards%rot(i, :) = pack(keeps%rot(i, :), lspill_list(:)) - end do if (count(.not.lspill_list(:)) > 0) then keeps%mass(:) = pack(keeps%mass(:), .not. lspill_list(:)) keeps%Gmass(:) = pack(keeps%Gmass(:), .not. lspill_list(:)) keeps%rhill(:) = pack(keeps%rhill(:), .not. lspill_list(:)) keeps%radius(:) = pack(keeps%radius(:), .not. lspill_list(:)) keeps%density(:) = pack(keeps%density(:), .not. lspill_list(:)) - keeps%k2(:) = pack(keeps%k2(:), .not. lspill_list(:)) - keeps%Q(:) = pack(keeps%Q(:), .not. lspill_list(:)) - do i = 1, NDIM - keeps%Ip(i, :) = pack(keeps%Ip(i, :), .not. lspill_list(:)) - keeps%rot(i, :) = pack(keeps%rot(i, :), .not. lspill_list(:)) - end do end if call util_spill_body(keeps, discards, lspill_list) @@ -219,20 +207,6 @@ end subroutine util_fill_body keeps%density(:) = unpack(keeps%density(:),.not.lfill_list(:), keeps%density(:)) keeps%density(:) = unpack(inserts%density(:),lfill_list(:), keeps%density(:)) - do i = 1, NDIM - keeps%Ip(i, :) = unpack(keeps%Ip(i, :), .not.lfill_list(:), keeps%Ip(i, :)) - keeps%Ip(i, :) = unpack(inserts%Ip(i, :), lfill_list(:), keeps%Ip(i, :)) - - keeps%rot(i, :) = unpack(keeps%rot(i, :), .not.lfill_list(:), keeps%rot(i, :)) - keeps%rot(i, :) = unpack(inserts%rot(i, :), lfill_list(:), keeps%rot(i, :)) - - end do - keeps%k2(:) = unpack(keeps%k2(:), .not.lfill_list(:), keeps%k2(:)) - keeps%k2(:) = unpack(inserts%k2(:), lfill_list(:), keeps%k2(:)) - - keeps%Q(:) = unpack(keeps%Q(:), .not.lfill_list(:), keeps%Q(:)) - keeps%Q(:) = unpack(inserts%Q(:), lfill_list(:), keeps%Q(:)) - call util_fill_body(keeps, inserts, lfill_list) class default write(*,*) 'Error! fill method called for incompatible return type on swiftest_pl' diff --git a/src/util/util_valid.f90 b/src/util/util_valid.f90 index 7dd755646..ec1110025 100644 --- a/src/util/util_valid.f90 +++ b/src/util/util_valid.f90 @@ -15,10 +15,10 @@ associate(npl => pl%nbody, ntp => tp%nbody) allocate(idarr(npl+ntp)) do i = 1, npl - idarr(i) = pl%name(i) + idarr(i) = pl%id(i) end do do i = 1, ntp - idarr(npl+i) = tp%name(i) + idarr(npl+i) = tp%id(i) end do call util_sort(idarr) do i = 1, npl + ntp - 1 diff --git a/src/whm/whm_drift.f90 b/src/whm/whm_drift.f90 index 0ac170991..a27897cfa 100644 --- a/src/whm/whm_drift.f90 +++ b/src/whm/whm_drift.f90 @@ -45,7 +45,7 @@ module subroutine whm_drift_pl(self, system, param, dt) if (any(iflag(1:npl) /= 0)) then do i = 1, npl if (iflag(i) /= 0) then - write(*, *) " Planet ", self%name(i), " is lost!!!!!!!!!!" + write(*, *) " Planet ", self%id(i), " is lost!!!!!!!!!!" write(*, *) pl%xj(:,i) write(*, *) pl%vj(:,i) write(*, *) " stopping " @@ -102,7 +102,7 @@ module subroutine whm_drift_tp(self, system, param, dt) if (any(iflag(1:ntp) /= 0)) then where(iflag(1:ntp) /= 0) tp%status(1:ntp) = DISCARDED_DRIFTERR do i = 1, ntp - if (iflag(i) /= 0) write(*, *) "Particle ", self%name(i), " lost due to error in Danby drift" + if (iflag(i) /= 0) write(*, *) "Particle ", self%id(i), " lost due to error in Danby drift" end do end if end associate From ee557416e9325e5d379b8b8677ac3ab81eb258fb Mon Sep 17 00:00:00 2001 From: David A Minton Date: Fri, 9 Jul 2021 18:03:41 -0400 Subject: [PATCH 06/23] Fixed inconsistent interface definitions --- Makefile.Defines | 8 ++++---- src/symba/symba_io.f90 | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Makefile.Defines b/Makefile.Defines index 1346f4b09..07126f842 100644 --- a/Makefile.Defines +++ b/Makefile.Defines @@ -65,13 +65,13 @@ GPAR = -fopenmp -ftree-parallelize-loops=4 GMEM = -fsanitize=undefined -fsanitize=address -fsanitize=leak GWARNINGS = -Wall -Warray-bounds -Wimplicit-interface -Wextra -Warray-temporaries -#FFLAGS = $(IDEBUG) $(HEAPARR) +FFLAGS = $(IDEBUG) $(HEAPARR) #FFLAGS = -init=snan,arrays -no-wrap-margin -O3 $(STRICTREAL) $(SIMDVEC) $(PAR) -#FORTRAN = ifort +FORTRAN = ifort #AR = xiar -FORTRAN = gfortran -FFLAGS = -ffree-line-length-none $(GDEBUG) #$(GMEM) +#FORTRAN = gfortran +#FFLAGS = -ffree-line-length-none $(GDEBUG) #$(GMEM) AR = ar # DO NOT include in CFLAGS the "-c" option to compile object only diff --git a/src/symba/symba_io.f90 b/src/symba/symba_io.f90 index 70123d5bd..6657582e0 100644 --- a/src/symba/symba_io.f90 +++ b/src/symba/symba_io.f90 @@ -272,7 +272,7 @@ module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) return end subroutine symba_io_read_frame_pl - subroutine symba_io_read_frame_info(self, iu, param, form, ierr) + module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) !! author: David A. Minton !! !! Reads a single frame of a particle info data from a file. @@ -282,6 +282,8 @@ subroutine symba_io_read_frame_info(self, iu, param, form, ierr) class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters character(*), intent(in) :: form !! Input format code ("XV" or "EL") integer(I4B), intent(out) :: ierr !! Error code + + ierr = 0 end subroutine symba_io_read_frame_info module subroutine symba_io_read_cb_in(self, param) @@ -410,7 +412,7 @@ module subroutine symba_io_read_pl_in(self, param) return end subroutine symba_io_read_pl_in - subroutine symba_io_write_frame_cb(self, iu, param) + module subroutine symba_io_write_frame_cb(self, iu, param) !! author: David A. Minton !! !! Writes a single frame of a SyMBA pl file @@ -437,7 +439,7 @@ subroutine symba_io_write_frame_cb(self, iu, param) end select end subroutine symba_io_write_frame_cb - subroutine symba_io_write_frame_pl(self, iu, param) + module subroutine symba_io_write_frame_pl(self, iu, param) !! author: David A. Minton !! !! Writes a single frame of a SyMBA pl file From 28cdd47161ec798f98fb4102f473d4139627c58a Mon Sep 17 00:00:00 2001 From: David A Minton Date: Sat, 10 Jul 2021 00:38:34 -0400 Subject: [PATCH 07/23] Added templates for setup and initilization methods for symba, and the encounter and merger structures. --- src/modules/swiftest_classes.f90 | 111 +++++++++++++++---------------- src/modules/symba_classes.f90 | 88 ++++++++++++------------ src/rmvs/rmvs_setup.f90 | 15 ++--- src/symba/symba_setup.f90 | 73 ++++++++++++++++++++ 4 files changed, 178 insertions(+), 109 deletions(-) create mode 100644 src/symba/symba_setup.f90 diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index d8a5e46d5..229e283d8 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -76,9 +76,6 @@ module swiftest_classes procedure, public :: writer => io_param_writer procedure, public :: dump => io_dump_param procedure, public :: read_from_file => io_read_param_in - !TODO: Figure out if user-defined derived-type io can be made to work properly - !generic :: read(FORMATTED) => param_reader - !generic :: write(FORMATTED) => param_writer end type swiftest_parameters !******************************************************************************************************************************** @@ -166,7 +163,7 @@ module swiftest_classes procedure, public :: accel_obl => obl_acc_body !! Compute the barycentric accelerations of bodies due to the oblateness of the central body procedure, public :: el2xv => orbel_el2xv_vec !! Convert orbital elements to position and velocity vectors procedure, public :: xv2el => orbel_xv2el_vec !! Convert position and velocity vectors to orbital elements - procedure, public :: set_ir3 => util_set_ir3h !! Sets the inverse heliocentric radius term (1/rh**3) + procedure, public :: set_ir3 => util_set_ir3h !! Sets the inverse heliocentric radius term (1/rh**3) procedure, public :: setup => setup_body !! A constructor that sets the number of bodies and allocates all allocatable arrays procedure, public :: accel_user => user_getacch_body !! Add user-supplied heliocentric accelerations to planets procedure, public :: fill => util_fill_body !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) @@ -180,15 +177,15 @@ module swiftest_classes !> An abstract class for a generic collection of Swiftest massive bodies type, abstract, public, extends(swiftest_body) :: swiftest_pl !! Superclass that defines the generic elements of a Swiftest particle - real(DP), dimension(:), allocatable :: mass !! Body mass (units MU) - real(DP), dimension(:), allocatable :: Gmass !! Mass gravitational term G * mass (units GU * MU) - real(DP), dimension(:), allocatable :: rhill !! Body mass (units MU) - real(DP), dimension(:), allocatable :: radius !! Body radius (units DU) - real(DP), dimension(:), allocatable :: irij3 !! 1.0_DP / (rji2 * sqrt(rji2)) where rji2 is the square of the Euclidean distance - real(DP), dimension(:,:), allocatable :: xbeg !! Position at beginning of step - real(DP), dimension(:,:), allocatable :: xend !! Position at end of step - real(DP), dimension(:,:), allocatable :: vbeg !! Velocity at beginning of step - real(DP), dimension(:), allocatable :: density !! Body mass density - calculated internally (units MU / DU**3) + real(DP), dimension(:), allocatable :: mass !! Body mass (units MU) + real(DP), dimension(:), allocatable :: Gmass !! Mass gravitational term G * mass (units GU * MU) + real(DP), dimension(:), allocatable :: rhill !! Body mass (units MU) + real(DP), dimension(:), allocatable :: radius !! Body radius (units DU) + real(DP), dimension(:), allocatable :: irij3 !! 1.0_DP / (rji2 * sqrt(rji2)) where rji2 is the square of the Euclidean distance + real(DP), dimension(:,:), allocatable :: xbeg !! Position at beginning of step + real(DP), dimension(:,:), allocatable :: xend !! Position at end of step + real(DP), dimension(:,:), allocatable :: vbeg !! Velocity at beginning of step + real(DP), dimension(:), allocatable :: density !! Body mass density - calculated internally (units MU / DU**3) !! Note to developers: If you add components to this class, be sure to update methods and subroutines that traverse the !! component list, such as setup_pl and util_spill_pl contains @@ -200,8 +197,8 @@ module swiftest_classes procedure, public :: eucl_irij3 => eucl_irij3_plpl !! Parallelized single loop blocking for Euclidean distance matrix calcualtion procedure, public :: accel_obl => obl_acc_pl !! Compute the barycentric accelerations of bodies due to the oblateness of the central body procedure, public :: setup => setup_pl !! A base constructor that sets the number of bodies and allocates and initializes all arrays - procedure, public :: set_mu => util_set_mu_pl !! Method used to construct the vectorized form of the central body mass - procedure, public :: set_rhill => util_set_rhill !! Calculates the Hill's radii for each body + procedure, public :: set_mu => util_set_mu_pl !! Method used to construct the vectorized form of the central body mass + procedure, public :: set_rhill => util_set_rhill !! Calculates the Hill's radii for each body procedure, public :: h2b => util_coord_h2b_pl !! Convert massive bodies from heliocentric to barycentric coordinates (position and velocity) procedure, public :: b2h => util_coord_b2h_pl !! Convert massive bodies from barycentric to heliocentric coordinates (position and velocity) procedure, public :: fill => util_fill_pl !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) @@ -215,10 +212,10 @@ module swiftest_classes !> An abstract class for a generic collection of Swiftest test particles type, abstract, public, extends(swiftest_body) :: swiftest_tp !! Superclass that defines the generic elements of a Swiftest test particle - integer(I4B), dimension(:), allocatable :: isperi !! Perihelion passage flag - real(DP), dimension(:), allocatable :: peri !! Perihelion distance - real(DP), dimension(:), allocatable :: atp !! Semimajor axis following perihelion passage - real(DP), dimension(:, :), allocatable :: irij3 !! 1.0_DP / (rji2 * sqrt(rji2)) where rji2 is the square of the Euclidean distance betwen each pl-tp + integer(I4B), dimension(:), allocatable :: isperi !! Perihelion passage flag + real(DP), dimension(:), allocatable :: peri !! Perihelion distance + real(DP), dimension(:), allocatable :: atp !! Semimajor axis following perihelion passage + real(DP), dimension(:, :), allocatable :: irij3 !! 1.0_DP / (rji2 * sqrt(rji2)) where rji2 is the square of the Euclidean distance betwen each pl-tp !! Note to developers: If you add components to this class, be sure to update methods and subroutines that traverse the !! component list, such as setup_tp and util_spill_tp contains @@ -227,9 +224,9 @@ module swiftest_classes ! These are concrete because they are the same implemenation for all integrators procedure, public :: discard => discard_tp !! Check to see if test particles should be discarded based on their positions relative to the massive bodies procedure, public :: eucl_index => eucl_dist_index_pltp !! Sets up the (i, j) -> k indexing used for the single-loop blocking Euclidean distance matrix - procedure, public :: accel_obl => obl_acc_tp !! Compute the barycentric accelerations of bodies due to the oblateness of the central body + procedure, public :: accel_obl => obl_acc_tp !! Compute the barycentric accelerations of bodies due to the oblateness of the central body procedure, public :: setup => setup_tp !! A base constructor that sets the number of bodies and - procedure, public :: set_mu => util_set_mu_tp !! Method used to construct the vectorized form of the central body mass + procedure, public :: set_mu => util_set_mu_tp !! Method used to construct the vectorized form of the central body mass procedure, public :: h2b => util_coord_h2b_tp !! Convert test particles from heliocentric to barycentric coordinates (position and velocity) procedure, public :: b2h => util_coord_b2h_tp !! Convert test particles from barycentric to heliocentric coordinates (position and velocity) procedure, public :: fill => util_fill_tp !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) @@ -264,13 +261,13 @@ module swiftest_classes procedure(abstract_step_system), public, deferred :: step ! Concrete classes that are common to the basic integrator (only test particles considered for discard) - procedure, public :: discard => discard_system !! Perform a discard step on the system - procedure, public :: dump => io_dump_system !! Dump the state of the system to a file - procedure, public :: initialize => io_read_initialize_system !! Initialize the system from an input file - procedure, public :: read_frame => io_read_frame_system !! Append a frame of output data to file - procedure, public :: set_msys => util_set_msys !! Sets the value of msys from the masses of system bodies. - procedure, public :: write_discard => io_write_discard !! Append a frame of output data to file - procedure, public :: write_frame => io_write_frame_system !! Append a frame of output data to file + procedure, public :: discard => discard_system !! Perform a discard step on the system + procedure, public :: dump => io_dump_system !! Dump the state of the system to a file + procedure, public :: initialize => io_read_initialize_system !! Initialize the system from an input file + procedure, public :: read_frame => io_read_frame_system !! Append a frame of output data to file + procedure, public :: set_msys => util_set_msys !! Sets the value of msys from the masses of system bodies. + procedure, public :: write_discard => io_write_discard !! Append a frame of output data to file + procedure, public :: write_frame => io_write_frame_system !! Append a frame of output data to file end type swiftest_nbody_system abstract interface @@ -324,17 +321,17 @@ end subroutine abstract_step_body subroutine abstract_step_system(self, param, t, dt) import DP, swiftest_nbody_system, swiftest_parameters implicit none - class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - real(DP), intent(in) :: t !! Simulation time - real(DP), intent(in) :: dt !! Current stepsize + class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + real(DP), intent(in) :: t !! Simulation time + real(DP), intent(in) :: dt !! Current stepsize end subroutine abstract_step_system subroutine abstract_write_frame(self, iu, param) import DP, I4B, swiftest_base, swiftest_parameters - class(swiftest_base), intent(in) :: self !! Swiftest base object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + class(swiftest_base), intent(in) :: self !! Swiftest base object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine abstract_write_frame end interface @@ -348,8 +345,8 @@ end subroutine discard_pl module subroutine discard_system(self, param) implicit none - class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine discard_system module subroutine discard_tp(self, system, param) @@ -361,10 +358,10 @@ end subroutine discard_tp module pure elemental subroutine drift_one(mu, px, py, pz, vx, vy, vz, dt, iflag) implicit none - real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body to drift - real(DP), intent(inout) :: px, py, pz, vx, vy, vz !! Position and velocity of body to drift - real(DP), intent(in) :: dt !! Step size - integer(I4B), intent(out) :: iflag !! iflag : error status flag for Danby drift (0 = OK, nonzero = ERROR) + real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body to drift + real(DP), intent(inout) :: px, py, pz, vx, vy, vz !! Position and velocity of body to drift + real(DP), intent(in) :: dt !! Step size + integer(I4B), intent(out) :: iflag !! iflag : error status flag for Danby drift (0 = OK, nonzero = ERROR) end subroutine drift_one module subroutine eucl_dist_index_plpl(self) @@ -374,26 +371,26 @@ module subroutine eucl_dist_index_plpl(self) module subroutine eucl_dist_index_pltp(self, pl) implicit none - class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object - class(swiftest_pl), intent(inout) :: pl !! Swiftest massive body object + class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object + class(swiftest_pl), intent(inout) :: pl !! Swiftest massive body object end subroutine module subroutine eucl_irij3_plpl(self) implicit none - class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object + class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object end subroutine eucl_irij3_plpl module subroutine io_dump_param(self, param_file_name) implicit none - class(swiftest_parameters),intent(in) :: self !! Output collection of parameters + class(swiftest_parameters),intent(in) :: self !! Output collection of parameters character(len=*), intent(in) :: param_file_name !! Parameter input file name (i.e. param.in) end subroutine io_dump_param module subroutine io_dump_swiftest(self, param, msg) implicit none - class(swiftest_base), intent(inout) :: self !! Swiftest base object + class(swiftest_base), intent(inout) :: self !! Swiftest base object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - character(*), optional, intent(in) :: msg !! Message to display with dump operation + character(*), optional, intent(in) :: msg !! Message to display with dump operation end subroutine io_dump_swiftest module subroutine io_dump_system(self, param, msg) @@ -432,25 +429,25 @@ end subroutine io_param_reader module subroutine io_param_writer(self, unit, iotype, v_list, iostat, iomsg) implicit none - class(swiftest_parameters), intent(in) :: self !! Collection of parameters - integer(I4B), intent(in) :: unit !! File unit number - character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. - !! If you do not include a char-literal-constant, the iotype argument contains only DT. - integer(I4B), intent(in) :: v_list(:) !! Not used in this procedure - integer(I4B), intent(out) :: iostat !! IO status code - character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 + class(swiftest_parameters), intent(in) :: self !! Collection of parameters + integer(I4B), intent(in) :: unit !! File unit number + character(len=*), intent(in) :: iotype !! Dummy argument passed to the input/output procedure contains the text from the char-literal-constant, prefixed with DT. + !! If you do not include a char-literal-constant, the iotype argument contains only DT. + integer(I4B), intent(in) :: v_list(:) !! Not used in this procedure + integer(I4B), intent(out) :: iostat !! IO status code + character(len=*), intent(inout) :: iomsg !! Message to pass if iostat /= 0 end subroutine io_param_writer module subroutine io_read_body_in(self, param) implicit none - class(swiftest_body), intent(inout) :: self !! Swiftest body object + class(swiftest_body), intent(inout) :: self !! Swiftest body object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters end subroutine io_read_body_in module subroutine io_read_cb_in(self, param) implicit none - class(swiftest_cb), intent(inout) :: self - class(swiftest_parameters), intent(inout) :: param + class(swiftest_cb), intent(inout) :: self !! Swiftest central body object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters end subroutine io_read_cb_in module subroutine io_read_param_in(self, param_file_name) diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 05c2838b6..0faea9561 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -106,6 +106,7 @@ module symba_classes procedure, public :: read_frame => symba_io_read_frame_pl !! I/O routine for reading out a single frame of time-series data for a massive body procedure, public :: initialize => symba_io_read_pl_in !! I/O routine for reading in a massive body structure from file with SyMBA-specific parameters procedure, public :: write_frame => symba_io_write_frame_pl !! I/O routine for writing out a single frame of time-series data for a massive body + procedure, public :: setup => symba_setup_pl !! Constructor method - Allocates space for number of particle end type symba_pl !******************************************************************************************************************************** @@ -120,69 +121,49 @@ module symba_classes private procedure, public :: discard => symba_discard_tp !! process test particle discards procedure, public :: encounter_check => symba_encounter_check_tp !! Checks if any test particles are undergoing a close encounter with a massive body + procedure, public :: setup => symba_setup_tp !! Constructor method - Allocates space for number of particle end type symba_tp - !******************************************************************************************************************************** - ! symba_plplenc class definitions and method interfaces - !******************************************************************************************************************************* - !> SyMBA class for tracking pl-pl close encounters in a step - type symba_plplenc - integer(I4B) :: nplplenc !! Total number of pl-pl encounters - logical, dimension(:), allocatable :: lvdotr !! relative vdotr flag - integer(I4B), dimension(:), allocatable :: status !! status of the interaction - integer(I4B), dimension(:), allocatable :: level !! encounter recursion level - integer(I4B), dimension(:), allocatable :: index1 !! position of the first planet in encounter - integer(I4B), dimension(:), allocatable :: index2 !! position of the second planet in encounter - integer(I4B), dimension(:), allocatable :: enc_child !! the child of the encounter - integer(I4B), dimension(:), allocatable :: enc_parent !! the child of the encounter - real(DP), dimension(:,:), allocatable :: xh1 !! the heliocentric position of parent 1 in encounter - real(DP), dimension(:,:), allocatable :: xh2 !! the heliocentric position of parent 2 in encounter - real(DP), dimension(:,:), allocatable :: vb1 !! the barycentric velocity of parent 1 in encounter - real(DP), dimension(:,:), allocatable :: vb2 !! the barycentric velocity of parent 2 in encounter - end type symba_plplenc - !******************************************************************************************************************************** ! symba_pltpenc class definitions and method interfaces !******************************************************************************************************************************* !> SyMBA class for tracking pl-tp close encounters in a step - type symba_pltpenc - integer(I4B) :: npltpenc !! Total number of pl-tp encounters - logical, dimension(:), allocatable :: lvdotr !! relative vdotr flag - integer(I4B), dimension(:), allocatable :: status !! status of the interaction - integer(I4B), dimension(:), allocatable :: level !! encounter recursion level - integer(I4B), dimension(:), allocatable :: indexpl !! position of the planet in encounter - integer(I4B), dimension(:), allocatable :: indextp !! position of the test particle in encounter + type, public :: symba_pltpenc + integer(I4B) :: nenc !! Total number of encounters + logical, dimension(:), allocatable :: lvdotr !! relative vdotr flag + integer(I4B), dimension(:), allocatable :: status !! status of the interaction + integer(I4B), dimension(:), allocatable :: level !! encounter recursion level + integer(I4B), dimension(:), allocatable :: index1 !! position of the planet in encounter + integer(I4B), dimension(:), allocatable :: index2 !! position of the test particle in encounter end type symba_pltpenc !******************************************************************************************************************************** - ! symba_merger class definitions and method interfaces + ! symba_plplenc class definitions and method interfaces !******************************************************************************************************************************* - !> SyMBA class for tracking pl-pl mergers in a step - type symba_merger - integer(I4B), dimension(:), allocatable :: id !! identifier - integer(I4B), dimension(:), allocatable :: index_ps !! position of the particle - integer(I4B), dimension(:), allocatable :: status !! status - integer(I4B), dimension(:), allocatable :: nadded !! number of resultant bodies from this collisional event aka number of fragments - real(DP), dimension(:,:), allocatable :: xb !! barycentric position - real(DP), dimension(:,:), allocatable :: vb !! barycentric velocity - real(DP), dimension(:), allocatable :: mass !! mass - real(DP), dimension(:), allocatable :: radius ! radius - real(DP), dimension(:,:), allocatable :: IP ! moment of intertia - real(DP), dimension(:,:), allocatable :: rot ! rotation - type(symba_particle_info), dimension(:), allocatable :: info - end type symba_merger + !> SyMBA class for tracking pl-pl close encounters in a step + type, public, extends(symba_pltpenc) :: symba_plplenc + real(DP), dimension(:,:), allocatable :: xh1 !! the heliocentric position of parent 1 in encounter + real(DP), dimension(:,:), allocatable :: xh2 !! the heliocentric position of parent 2 in encounter + real(DP), dimension(:,:), allocatable :: vb1 !! the barycentric velocity of parent 1 in encounter + real(DP), dimension(:,:), allocatable :: vb2 !! the barycentric velocity of parent 2 in encounter + end type symba_plplenc !******************************************************************************************************************************** ! symba_nbody_system class definitions and method interfaces !******************************************************************************************************************************** type, public, extends(helio_nbody_system) :: symba_nbody_system + class(symba_pl), allocatable :: mergeadd_list !! List of added bodies in mergers or collisions + class(symba_pl), allocatable :: mergesub_list !! List of subtracted bodies in mergers or collisions + class(symba_pltpenc), allocatable :: pltpenc_list !! List of massive body-test particle encounters in a single step + class(symba_plplenc), allocatable :: plplenc_list !! List of massive body-massive body encounters in a single step + class(symba_pl), allocatable :: pl_discards !! Discarded test particle data structure contains private - procedure, public :: step => symba_step_system !! Advance the SyMBA nbody system forward in time by one step - procedure, public :: interp => symba_step_interp_system !! Perform an interpolation step on the SymBA nbody system + procedure, public :: initialize => symba_setup_system !! Performs SyMBA-specific initilization steps + procedure, public :: step => symba_step_system !! Advance the SyMBA nbody system forward in time by one step + procedure, public :: interp => symba_step_interp_system !! Perform an interpolation step on the SymBA nbody system end type symba_nbody_system - interface module subroutine symba_discard_pl(self, system, param) use swiftest_classes, only : swiftest_nbody_system, swiftest_parameters @@ -322,6 +303,19 @@ module subroutine symba_io_write_frame_pl(self, iu, param) class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine symba_io_write_frame_pl + module subroutine symba_setup_pl(self,n) + implicit none + class(symba_pl), intent(inout) :: self !! SyMBA test particle object + integer(I4B), intent(in) :: n !! Number of massive bodies to allocate + end subroutine symba_setup_pl + + module subroutine symba_setup_system(self, param) + use swiftest_classes, only : swiftest_parameters + implicit none + class(symba_nbody_system), intent(inout) :: self !! SyMBA system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + end subroutine symba_setup_system + module subroutine symba_step_system(self, param, t, dt) use swiftest_classes, only : swiftest_parameters implicit none @@ -331,6 +325,12 @@ module subroutine symba_step_system(self, param, t, dt) real(DP), intent(in) :: dt !! Current stepsize end subroutine symba_step_system + module subroutine symba_setup_tp(self,n) + implicit none + class(symba_tp), intent(inout) :: self !! SyMBA test particle object + integer(I4B), intent(in) :: n !! Number of test particles to allocate + end subroutine symba_setup_tp + module subroutine symba_step_interp_system(self, param, t, dt) use swiftest_classes, only : swiftest_parameters implicit none diff --git a/src/rmvs/rmvs_setup.f90 b/src/rmvs/rmvs_setup.f90 index 4c0c27ff1..f26d6e42d 100644 --- a/src/rmvs/rmvs_setup.f90 +++ b/src/rmvs/rmvs_setup.f90 @@ -9,11 +9,10 @@ module subroutine rmvs_setup_pl(self,n) !! Equivalent in functionality to David E. Kaufmann's Swifter routine rmvs_setup.f90 implicit none ! Arguments - class(rmvs_pl), intent(inout) :: self !! RMVS test particle object - integer(I4B), intent(in) :: n !! Number of test particles to allocate + class(rmvs_pl), intent(inout) :: self !! RMVS test particle object + integer(I4B), intent(in) :: n !! Number of massive bodies to allocate ! Internals - integer(I4B) :: i,j - !type(swiftest_parameters) :: encounter_param + integer(I4B) :: i,j !> Call allocation method for parent class associate(pl => self) @@ -49,7 +48,7 @@ end subroutine rmvs_setup_pl module subroutine rmvs_setup_system(self, param) !! author: David A. Minton !! - !! nitialize an RMVS nbody system from files and sets up the planetocentric structures. + !! Initialize an RMVS nbody system from files and sets up the planetocentric structures. !! !! We currently rearrange the pl order to keep it consistent with the way Swifter does it !! In Swifter, the central body occupies the first position in the pl list, and during @@ -58,7 +57,7 @@ module subroutine rmvs_setup_system(self, param) !! to use during close encounters. implicit none ! Arguments - class(rmvs_nbody_system), intent(inout) :: self !! RMVS system object + class(rmvs_nbody_system), intent(inout) :: self !! RMVS system object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters ! Internals integer(I4B) :: i, j @@ -126,8 +125,8 @@ module subroutine rmvs_setup_tp(self,n) !! Equivalent in functionality to David E. Kaufmann's Swifter routine whm_setup.f90 implicit none ! Arguments - class(rmvs_tp), intent(inout) :: self !! RMVS test particle object - integer, intent(in) :: n !! Number of test particles to allocate + class(rmvs_tp), intent(inout) :: self !! RMVS test particle object + integer, intent(in) :: n !! Number of test particles to allocate !> Call allocation method for parent class call whm_setup_tp(self, n) diff --git a/src/symba/symba_setup.f90 b/src/symba/symba_setup.f90 new file mode 100644 index 000000000..9c311f2d1 --- /dev/null +++ b/src/symba/symba_setup.f90 @@ -0,0 +1,73 @@ +submodule(symba_classes) s_symba_setup + use swiftest +contains + module subroutine symba_setup_pl(self,n) + !! author: David A. Minton + !! + !! Allocate SyMBA test particle structure + !! + !! Equivalent in functionality to David E. Kaufmann's Swifter routine symba_setup.f90 + implicit none + ! Arguments + class(symba_pl), intent(inout) :: self !! SyMBA test particle object + integer(I4B), intent(in) :: n !! Number of massive bodies to allocate + ! Internals + integer(I4B) :: i,j + + !> Call allocation method for parent class + associate(pl => self) + call helio_setup_pl(pl, n) + if (n <= 0) return + end associate + return + end subroutine symba_setup_pl + + module subroutine symba_setup_system(self, param) + !! author: David A. Minton + !! + !! Initialize an SyMBA nbody system from files and sets up the planetocentric structures. + !! + implicit none + ! Arguments + class(symba_nbody_system), intent(inout) :: self !! SyMBA system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + ! Internals + integer(I4B) :: i, j + + ! Call parent method + call helio_setup_system(self, param) + + ! Set up the pl-tp planetocentric encounter structures for pl and cb. The planetocentric tp structures are + ! generated as necessary during close encounter steps. + select type(pl => self%pl) + class is(symba_pl) + select type(cb => self%cb) + class is (symba_cb) + select type (tp => self%tp) + class is (symba_tp) + + + end select + end select + end select + + end subroutine symba_setup_system + + module subroutine symba_setup_tp(self,n) + !! author: David A. Minton + !! + !! Allocate WHM test particle structure + !! + !! Equivalent in functionality to David E. Kaufmann's Swifter routine whm_setup.f90 + implicit none + ! Arguments + class(symba_tp), intent(inout) :: self !! SyMBA test particle object + integer, intent(in) :: n !! Number of test particles to allocate + + !> Call allocation method for parent class + call helio_setup_tp(self, n) + if (n <= 0) return + return + end subroutine symba_setup_tp + +end submodule s_symba_setup From b78c88716b95b4ce8c1c79236a38def3a9d48d7f Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 11:26:28 -0400 Subject: [PATCH 08/23] Restructured GR routines to prepare for testing in Helio/SyMBA. Built additional templates for SyMBA. --- src/gr/gr.f90 | 172 ++++++++++++++++++++--- src/modules/swiftest.f90 | 3 - src/modules/swiftest_classes.f90 | 36 +++++ src/modules/symba_classes.f90 | 1 - src/rmvs/rmvs_setup.f90 | 1 - src/setup/setup.f90 | 17 ++- src/symba/symba_discard.f90 | 25 ++++ src/symba/symba_encounter_check.f90 | 30 ++++ src/symba/symba_io.f90 | 7 + src/symba/symba_setup.f90 | 14 +- src/symba/symba_step.f90 | 10 ++ src/util/util_spill_and_fill.f90 | 70 +++++----- src/whm/whm_gr.f90 | 205 ++++++---------------------- src/whm/whm_setup.f90 | 15 +- 14 files changed, 366 insertions(+), 240 deletions(-) create mode 100644 src/symba/symba_discard.f90 create mode 100644 src/symba/symba_encounter_check.f90 diff --git a/src/gr/gr.f90 b/src/gr/gr.f90 index a778e3db2..2cb200efa 100644 --- a/src/gr/gr.f90 +++ b/src/gr/gr.f90 @@ -1,43 +1,39 @@ submodule(swiftest_classes) s_gr use swiftest contains - subroutine gr_getaccb_ns_body(self, cb, param, agr, agr0) - + module pure subroutine gr_getaccb_ns_body(self, system, param) !! author: David A. Minton !! - !! Add relativistic correction acceleration for non-symplectic integrators - !! Based on Quinn, Tremaine, & Duncan 1998 + !! Add relativistic correction acceleration for non-symplectic integrators. + !! Based on Quinn et al. (1991) eq. 5 + !! + !! Reference: + !! Quinn, T.R., Tremaine, S., Duncan, M., 1991. A three million year integration of the earth’s orbit. + !! AJ 101, 2287–2305. https://doi.org/10.1086/115850 !! !! Adapted from David A. Minton's Swifter routine routine gr_getaccb_ns.f90 implicit none ! Arguments - class(swiftest_body), intent(inout) :: self - class(swiftest_cb), intent(inout) :: cb - class(swiftest_parameters), intent(in) :: param - real(DP), dimension(:, :), intent(inout) :: agr - real(DP), dimension(NDIM), intent(out) :: agr0 + class(swiftest_body), intent(inout) :: self !! Swiftest generic body object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters ! Internals - real(DP), dimension(NDIM) :: xh, vh real(DP) :: rmag, rdotv, vmag2 integer(I4B) :: i - associate(n => self%nbody, msun => cb%Gmass, vbsun => cb%vb, xbsun => cb%xb, mu => self%mu, c2 => param%inv_c2, & - xb => self%xb, vb => self%vb) + associate(n => self%nbody, cb => system%cb, inv_c2 => param%inv_c2) if (n == 0) return do i = 1, n - xh(:) = xb(:, i) - xbsun(:) - vh(:) = vb(:, i) - vbsun(:) - rmag = norm2(xh(:)) - vmag2 = dot_product(vh(:), vh(:)) - rdotv = dot_product(xh(:), vh(:)) - agr(:, i) = mu * c2 / rmag**3 * ((4 * mu(i) / rmag - vmag2) * xh(:) + 4 * rdotv * vh(:)) + rmag = norm2(self%xh(:,i)) + vmag2 = dot_product(self%vh(:,i), self%vh(:,i)) + rdotv = dot_product(self%xh(:,i), self%vh(:,i)) + self%agr(:, i) = self%mu * inv_c2 / rmag**3 * ((4 * self%mu(i) / rmag - vmag2) * self%xh(:,i) + 4 * rdotv * self%vh(:,i)) end do - agr0 = 0.0_DP select type(self) class is (swiftest_pl) do i = 1, NDIM - agr0(i) = -sum(self%Gmass(1:n) * agr(1:n, i) / msun) + cb%agr(i) = -sum(self%Gmass(1:n) * self%agr(1:n, i) / cb%Gmass) end do end select @@ -45,6 +41,140 @@ subroutine gr_getaccb_ns_body(self, cb, param, agr, agr0) return - end subroutine gr_getaccb_ns_body + end subroutine gr_getaccb_ns_body + + module pure subroutine gr_p4_pos_kick(param, x, v, dt) + !! author: David A. Minton + !! + !! Position kick due to p**4 term in the post-Newtonian correction + !! Based on Saha & Tremaine (1994) Eq. 28 + !! + !! Reference: + !! Saha, P., Tremaine, S., 1994. Long-term planetary integration with individual time steps. + !! AJ 108, 1962–1969. https://doi.org/10.1086/117210 + !! + !! Adapted from David A. Minton's Swifter routine gr_whm_p4.f90 + implicit none + ! Arguments + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), dimension(:), intent(inout) :: x !! Position vector + real(DP), dimension(:), intent(in) :: v !! Velocity vector + real(DP), intent(in) :: dt !! Step size + ! Internals + real(DP), dimension(NDIM) :: dr + real(DP) :: vmag2 + + vmag2 = dot_product(v(:), v(:)) + dr(:) = -2 * param%inv_c2 * vmag2 * v(:) + x(:) = x(:) + dr(:) * dt + + return + end subroutine gr_p4_pos_kick + + module pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) + !! author: David A. Minton + !! + !! Converts the relativistic pseudovelocity back into a veliocentric velocity + !! Based on Saha & Tremaine (1994) Eq. 32 + !! + !! Reference: + !! Saha, P., Tremaine, S., 1994. Long-term planetary integration with individual time steps. + !! AJ 108, 1962–1969. https://doi.org/10.1086/117210 + !! + !! Adapted from David A. Minton's Swifter routine gr_pseudovel2vel.f90 + implicit none + ! Arguments + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body + real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector + real(DP), dimension(:), intent(in) :: pv !! Pseudovelocity velocity vector - see Saha & Tremain (1994), eq. (32) + real(DP), dimension(:), intent(out) :: vh !! Heliocentric velocity vector + ! Internals + real(DP) :: vmag2, rmag, grterm + + associate(c2 => param%inv_c2) + vmag2 = dot_product(pv(:), pv(:)) + rmag = norm2(xh(:)) + grterm = 1.0_DP - c2 * (0.5_DP * vmag2 + 3 * mu / rmag) + vh(:) = pv(:) * grterm + end associate + return + end subroutine gr_pseudovel2vel + + module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) + !! author: David A. Minton + !! + !! Converts the heliocentric velocity into a pseudovelocity with relativistic corrections. + !! Uses Newton-Raphson method with direct inversion of the Jacobian (yeah, it's slow, but + !! this is only done once per run). + !! + !! Reference: + !! Saha, P., Tremaine, S., 1994. Long-term planetary integration with individual time steps. + !! AJ 108, 1962–1969. https://doi.org/10.1086/117210 + !! + !! Adapted from David A. Minton's Swifter routine gr_vel2pseudovel.f90 + implicit none + ! Arguments + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body + real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector + real(DP), dimension(:), intent(in) :: vh !! Heliocentric velocity vector + real(DP), dimension(:), intent(out) :: pv !! Pseudovelocity vector - see Saha & Tremain (1994), eq. (32) + ! Internals + real(DP) :: v2, G, pv2, rterm, det + real(DP), dimension(NDIM,NDIM) :: J,Jinv + real(DP), dimension(NDIM) :: F + integer(I4B) :: n,i,k + integer(I4B), parameter :: MAXITER = 50 + real(DP),parameter :: TOL = 1.0e-12_DP + + associate (c2 => param%inv_c2) + pv(1:NDIM) = vh(1:NDIM) ! Initial guess + rterm = 3 * mu / norm2(xh(:)) + v2 = dot_product(vh(:), vh(:)) + do n = 1, MAXITER + pv2 = dot_product(pv(:), pv(:)) + G = 1.0_DP - c2 * (0.5_DP * pv2 + rterm) + F(:) = pv(:) * G - vh(:) + if (abs(sum(F) / v2 ) < TOL) exit ! Root found + + ! Calculate the Jacobian + do k = 1, NDIM + do i = 1, NDIM + if (i == k) then + J(i,k) = G - c2 * pv(k) + else + J(i,k) = - c2 * pv(k) + end if + end do + end do + + ! Inverse of the Jacobian + det = J(1,1) * (J(3,3) * J(2,2) - J(3,2) * J(2,3)) + det = det - J(2,1) * (J(3,3) * J(1,2)-J(3,2) * J(1,3)) + det = det + J(3,1) * (J(2,3) * J(1,2)-J(2,2) * J(1,3)) + + Jinv(1,1) = J(3,3) * J(2,2) - J(3,2) * J(2,3) + Jinv(1,2) = -(J(3,3) * J(1,2) - J(3,2) * J(1,3)) + Jinv(1,3) = J(2,3) * J(1,2) - J(2,2) * J(1,3) + + Jinv(2,1) = -(J(3,3) * J(2,1) - J(3,1) * J(2,3)) + Jinv(2,2) = J(3,3) * J(1,1) - J(3,1) * J(1,3) + Jinv(2,3) = -(J(2,3) * J(1,1) - J(2,1) * J(1,3)) + + Jinv(3,1) = J(3,2) * J(2,1) - J(3,1) * J(2,2) + Jinv(3,2) = -(J(3,2) * J(1,1) - J(3,1) * J(1,2)) + Jinv(3,3) = J(2,2) * J(1,1) - J(2,1) * J(1,2) + + Jinv = Jinv * det + + do i = 1, NDIM + pv(i) = pv(i) - dot_product(Jinv(i,:) ,F(:)) + end do + end do + + end associate + return + end subroutine gr_vel2pseudovel end submodule s_gr \ No newline at end of file diff --git a/src/modules/swiftest.f90 b/src/modules/swiftest.f90 index 2b8749e2f..dcc8dc875 100644 --- a/src/modules/swiftest.f90 +++ b/src/modules/swiftest.f90 @@ -14,9 +14,6 @@ module swiftest use module_nrutil !use advisor_annotate !$ use omp_lib - - - implicit none public diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 229e283d8..0e8a0a3f5 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -9,6 +9,7 @@ module swiftest_classes public :: discard_pl, discard_system, discard_tp public :: drift_one public :: eucl_dist_index_plpl, eucl_dist_index_pltp, eucl_irij3_plpl + public :: gr_getaccb_ns_body, gr_p4_pos_kick, gr_pseudovel2vel, gr_vel2pseudovel public :: io_dump_param, io_dump_swiftest, io_dump_system, io_get_args, io_get_token, io_param_reader, io_param_writer, io_read_body_in, & io_read_cb_in, io_read_param_in, io_read_frame_body, io_read_frame_cb, io_read_frame_system, io_read_initialize_system, & io_write_discard, io_write_encounter, io_write_frame_body, io_write_frame_cb, io_write_frame_system @@ -111,6 +112,7 @@ module swiftest_classes real(DP), dimension(NDIM) :: aoblend = 0.0_DP !! Barycentric acceleration due to central body oblatenes at end of step real(DP), dimension(NDIM) :: xb = 0.0_DP !! Barycentric position (units DU) real(DP), dimension(NDIM) :: vb = 0.0_DP !! Barycentric velocity (units DU / TU) + real(DP), dimension(NDIM) :: agr = 0.0_DP !! Acceleration due to post-Newtonian correction contains private procedure, public :: initialize => io_read_cb_in !! I/O routine for reading in central body data @@ -137,6 +139,7 @@ module swiftest_classes real(DP), dimension(:,:), allocatable :: vb !! Barycentric velocity real(DP), dimension(:,:), allocatable :: ah !! Total heliocentric acceleration real(DP), dimension(:,:), allocatable :: aobl !! Barycentric accelerations of bodies due to central body oblatenes + real(DP), dimension(:,:), allocatable :: agr !! Acceleration due to post-Newtonian correction real(DP), dimension(:), allocatable :: ir3h !! Inverse heliocentric radius term (1/rh**3) real(DP), dimension(:), allocatable :: a !! Semimajor axis (pericentric distance for a parabolic orbit) real(DP), dimension(:), allocatable :: e !! Eccentricity @@ -380,6 +383,39 @@ module subroutine eucl_irij3_plpl(self) class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object end subroutine eucl_irij3_plpl + module pure subroutine gr_getaccb_ns_body(self, system, param) + implicit none + class(swiftest_body), intent(inout) :: self !! Swiftest generic body object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine gr_getaccb_ns_body + + module pure subroutine gr_p4_pos_kick(param, x, v, dt) + implicit none + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), dimension(:), intent(inout) :: x !! Position vector + real(DP), dimension(:), intent(in) :: v !! Velocity vector + real(DP), intent(in) :: dt !! Step size + end subroutine gr_p4_pos_kick + + module pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) + implicit none + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body + real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector + real(DP), dimension(:), intent(in) :: pv !! Pseudovelocity velocity vector - see Saha & Tremain (1994), eq. (32) + real(DP), dimension(:), intent(out) :: vh !! Heliocentric velocity vector + end subroutine gr_pseudovel2vel + + module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) + implicit none + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body + real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector + real(DP), dimension(:), intent(in) :: vh !! Heliocentric velocity vector + real(DP), dimension(:), intent(out) :: pv !! Pseudovelocity vector - see Saha & Tremain (1994), eq. (32) + end subroutine gr_vel2pseudovel + module subroutine io_dump_param(self, param_file_name) implicit none class(swiftest_parameters),intent(in) :: self !! Output collection of parameters diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 0faea9561..26ca7df6e 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -271,7 +271,6 @@ module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) integer(I4B), intent(out) :: ierr !! Error code end subroutine symba_io_read_frame_pl - module subroutine symba_io_read_pl_in(self, param) use swiftest_classes, only : swiftest_parameters implicit none diff --git a/src/rmvs/rmvs_setup.f90 b/src/rmvs/rmvs_setup.f90 index f26d6e42d..83dd51106 100644 --- a/src/rmvs/rmvs_setup.f90 +++ b/src/rmvs/rmvs_setup.f90 @@ -24,7 +24,6 @@ module subroutine rmvs_setup_pl(self,n) if (.not.pl%lplanetocentric) then allocate(pl%nenc(n)) pl%nenc(:) = 0 - ! Set up inner and outer planet interpolation vector storage containers do i = 0, NTENC allocate(pl%outer(i)%x(NDIM, n)) diff --git a/src/setup/setup.f90 b/src/setup/setup.f90 index a64f64a15..402ef62a4 100644 --- a/src/setup/setup.f90 +++ b/src/setup/setup.f90 @@ -46,7 +46,19 @@ module subroutine setup_construct_system(system, param) allocate(rmvs_tp :: system%tp_discards) end select case (SYMBA) - write(*,*) 'SyMBA integrator not yet enabled' + allocate(symba_nbody_system :: system) + select type(system) + class is (symba_nbody_system) + allocate(symba_cb :: system%cb) + allocate(symba_pl :: system%pl) + allocate(symba_tp :: system%tp) + allocate(symba_pl :: system%pl_discards) + allocate(symba_tp :: system%tp_discards) + allocate(symba_pl :: system%mergeadd_list) + allocate(symba_pl :: system%mergesub_list) + allocate(symba_plplenc :: system%plplenc_list) + allocate(symba_pltpenc :: system%pltpenc_list) + end select case (RINGMOONS) write(*,*) 'RINGMOONS-SyMBA integrator not yet enabled' case default @@ -73,6 +85,7 @@ module subroutine setup_body(self,n) !write(*,*) 'Allocating the basic Swiftest particle' allocate(self%id(n)) + allocate(self%name(n)) allocate(self%status(n)) allocate(self%ldiscard(n)) allocate(self%xh(NDIM, n)) @@ -81,6 +94,7 @@ module subroutine setup_body(self,n) allocate(self%vb(NDIM, n)) allocate(self%ah(NDIM, n)) allocate(self%aobl(NDIM, n)) + allocate(self%agr(NDIM, n)) allocate(self%ir3h(n)) allocate(self%a(n)) allocate(self%e(n)) @@ -91,6 +105,7 @@ module subroutine setup_body(self,n) allocate(self%mu(n)) self%id(:) = 0 + self%name(:) = "UNNAMED" self%status(:) = INACTIVE self%ldiscard(:) = .false. self%xh(:,:) = 0.0_DP diff --git a/src/symba/symba_discard.f90 b/src/symba/symba_discard.f90 new file mode 100644 index 000000000..8bafdb2b5 --- /dev/null +++ b/src/symba/symba_discard.f90 @@ -0,0 +1,25 @@ +submodule (symba_classes) s_symba_discard + use swiftest +contains + + module subroutine symba_discard_pl(self, system, param) + implicit none + ! Arguments + class(symba_pl), intent(inout) :: self !! SyMBA test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + + return + end subroutine symba_discard_pl + + module subroutine symba_discard_tp(self, system, param) + implicit none + ! Arguments + class(symba_tp), intent(inout) :: self !! SyMBA test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + + return + end subroutine symba_discard_tp + +end submodule s_symba_discard \ No newline at end of file diff --git a/src/symba/symba_encounter_check.f90 b/src/symba/symba_encounter_check.f90 new file mode 100644 index 000000000..ce4b53dff --- /dev/null +++ b/src/symba/symba_encounter_check.f90 @@ -0,0 +1,30 @@ +submodule (symba_classes) s_symba_encounter_check + use swiftest +contains + module function symba_encounter_check_pl(self, system, dt) result(lencounter) + implicit none + ! Arguments + class(symba_pl), intent(inout) :: self !! SyMBA test particle object + class(symba_nbody_system), intent(inout) :: system !! SyMBA nbody system object + real(DP), intent(in) :: dt !! step size + ! Result + logical :: lencounter !! Returns true if there is at least one close encounter + + lencounter = .false. + return + end function symba_encounter_check_pl + + module function symba_encounter_check_tp(self, system, dt) result(lencounter) + implicit none + ! Arguments + class(symba_tp), intent(inout) :: self !! SyMBA test particle object + class(symba_nbody_system), intent(inout) :: system !! SyMBA nbody system object + real(DP), intent(in) :: dt !! step size + ! Result + logical :: lencounter !! Returns true if there is at least one close encounter + + lencounter = .false. + return + end function symba_encounter_check_tp + +end submodule s_symba_encounter_check \ No newline at end of file diff --git a/src/symba/symba_io.f90 b/src/symba/symba_io.f90 index 6657582e0..8fd9bc6bc 100644 --- a/src/symba/symba_io.f90 +++ b/src/symba/symba_io.f90 @@ -439,6 +439,13 @@ module subroutine symba_io_write_frame_cb(self, iu, param) end select end subroutine symba_io_write_frame_cb + module subroutine symba_io_write_frame_info(self, iu, param) + implicit none + class(symba_particle_info), intent(in) :: self !! SyMBA particle info object + integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine symba_io_write_frame_info + module subroutine symba_io_write_frame_pl(self, iu, param) !! author: David A. Minton !! diff --git a/src/symba/symba_setup.f90 b/src/symba/symba_setup.f90 index 9c311f2d1..6449013dd 100644 --- a/src/symba/symba_setup.f90 +++ b/src/symba/symba_setup.f90 @@ -15,10 +15,9 @@ module subroutine symba_setup_pl(self,n) integer(I4B) :: i,j !> Call allocation method for parent class - associate(pl => self) - call helio_setup_pl(pl, n) - if (n <= 0) return - end associate + !call helio_setup_pl(self, n) + call setup_pl(self, n) + if (n <= 0) return return end subroutine symba_setup_pl @@ -35,10 +34,8 @@ module subroutine symba_setup_system(self, param) integer(I4B) :: i, j ! Call parent method - call helio_setup_system(self, param) + call whm_setup_system(self, param) - ! Set up the pl-tp planetocentric encounter structures for pl and cb. The planetocentric tp structures are - ! generated as necessary during close encounter steps. select type(pl => self%pl) class is(symba_pl) select type(cb => self%cb) @@ -65,7 +62,8 @@ module subroutine symba_setup_tp(self,n) integer, intent(in) :: n !! Number of test particles to allocate !> Call allocation method for parent class - call helio_setup_tp(self, n) + !call helio_setup_tp(self, n) + call setup_tp(self, n) if (n <= 0) return return end subroutine symba_setup_tp diff --git a/src/symba/symba_step.f90 b/src/symba/symba_step.f90 index 10e8938db..b04caa74e 100644 --- a/src/symba/symba_step.f90 +++ b/src/symba/symba_step.f90 @@ -34,4 +34,14 @@ module subroutine symba_step_system(self, param, t, dt) return end subroutine symba_step_system + + module subroutine symba_step_interp_system(self, param, t, dt) + implicit none + class(symba_nbody_system), intent(inout) :: self !! SyMBA nbody system object + class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters + real(DP), intent(in) :: t !! Simulation time + real(DP), intent(in) :: dt !! Current stepsize + + return + end subroutine symba_step_interp_system end submodule s_symba_step diff --git a/src/util/util_spill_and_fill.f90 b/src/util/util_spill_and_fill.f90 index 4513e5b24..1a51c06c5 100644 --- a/src/util/util_spill_and_fill.f90 +++ b/src/util/util_spill_and_fill.f90 @@ -17,39 +17,43 @@ module subroutine util_spill_body(self, discards, lspill_list) ! For each component, pack the discarded bodies into the discard object and do the inverse with the keeps !> Spill all the common components associate(keeps => self) - discards%id(:) = pack(keeps%id(:), lspill_list(:)) - discards%status(:) = pack(keeps%status(:), lspill_list(:)) - discards%a(:) = pack(keeps%a(:), lspill_list(:)) - discards%e(:) = pack(keeps%e(:), lspill_list(:)) - discards%capom(:) = pack(keeps%capom(:), lspill_list(:)) - discards%omega(:) = pack(keeps%omega(:), lspill_list(:)) - discards%capm(:) = pack(keeps%capm(:), lspill_list(:)) - discards%mu(:) = pack(keeps%mu(:), lspill_list(:)) + discards%id(:) = pack(keeps%id(:), lspill_list(:)) + discards%name(:) = pack(keeps%name(:), lspill_list(:)) + discards%status(:) = pack(keeps%status(:), lspill_list(:)) + discards%a(:) = pack(keeps%a(:), lspill_list(:)) + discards%e(:) = pack(keeps%e(:), lspill_list(:)) + discards%capom(:) = pack(keeps%capom(:), lspill_list(:)) + discards%omega(:) = pack(keeps%omega(:), lspill_list(:)) + discards%capm(:) = pack(keeps%capm(:), lspill_list(:)) + discards%mu(:) = pack(keeps%mu(:), lspill_list(:)) do i = 1, NDIM - discards%xh(i, :) = pack(keeps%xh(i, :), lspill_list(:)) - discards%vh(i, :) = pack(keeps%vh(i, :), lspill_list(:)) - discards%xb(i, :) = pack(keeps%xb(i, :), lspill_list(:)) - discards%vb(i, :) = pack(keeps%vb(i, :), lspill_list(:)) - discards%ah(i, :) = pack(keeps%ah(i, :), lspill_list(:)) - discards%aobl(i, :) = pack(keeps%aobl(i, :), lspill_list(:)) + discards%xh(i, :) = pack(keeps%xh(i, :), lspill_list(:)) + discards%vh(i, :) = pack(keeps%vh(i, :), lspill_list(:)) + discards%xb(i, :) = pack(keeps%xb(i, :), lspill_list(:)) + discards%vb(i, :) = pack(keeps%vb(i, :), lspill_list(:)) + discards%ah(i, :) = pack(keeps%ah(i, :), lspill_list(:)) + discards%aobl(i, :) = pack(keeps%aobl(i, :), lspill_list(:)) + discards%agr(i, :) = pack(keeps%agr(i, :), lspill_list(:)) end do if (count(.not.lspill_list(:)) > 0) then - keeps%id(:) = pack(keeps%id(:), .not. lspill_list(:)) - keeps%status(:) = pack(keeps%status(:), .not. lspill_list(:)) - keeps%a(:) = pack(keeps%a(:), .not. lspill_list(:)) - keeps%e(:) = pack(keeps%e(:), .not. lspill_list(:)) - keeps%inc(:) = pack(keeps%inc(:), .not. lspill_list(:)) - keeps%capom(:) = pack(keeps%capom(:), .not. lspill_list(:)) - keeps%omega(:) = pack(keeps%omega(:), .not. lspill_list(:)) - keeps%capm(:) = pack(keeps%capm(:), .not. lspill_list(:)) - keeps%mu(:) = pack(keeps%mu(:), .not. lspill_list(:)) + keeps%id(:) = pack(keeps%id(:), .not. lspill_list(:)) + keeps%name(:) = pack(keeps%name(:), .not. lspill_list(:)) + keeps%status(:) = pack(keeps%status(:), .not. lspill_list(:)) + keeps%a(:) = pack(keeps%a(:), .not. lspill_list(:)) + keeps%e(:) = pack(keeps%e(:), .not. lspill_list(:)) + keeps%inc(:) = pack(keeps%inc(:), .not. lspill_list(:)) + keeps%capom(:) = pack(keeps%capom(:), .not. lspill_list(:)) + keeps%omega(:) = pack(keeps%omega(:), .not. lspill_list(:)) + keeps%capm(:) = pack(keeps%capm(:), .not. lspill_list(:)) + keeps%mu(:) = pack(keeps%mu(:), .not. lspill_list(:)) do i = 1, NDIM - keeps%xh(i, :) = pack(keeps%xh(i, :), .not. lspill_list(:)) - keeps%vh(i, :) = pack(keeps%vh(i, :), .not. lspill_list(:)) - keeps%xb(i, :) = pack(keeps%xb(i, :), .not. lspill_list(:)) - keeps%vb(i, :) = pack(keeps%vb(i, :), .not. lspill_list(:)) - keeps%ah(i, :) = pack(keeps%ah(i, :), .not. lspill_list(:)) - keeps%aobl(i, :) = pack(keeps%aobl(i, :), .not. lspill_list(:)) + keeps%xh(i, :) = pack(keeps%xh(i, :), .not. lspill_list(:)) + keeps%vh(i, :) = pack(keeps%vh(i, :), .not. lspill_list(:)) + keeps%xb(i, :) = pack(keeps%xb(i, :), .not. lspill_list(:)) + keeps%vb(i, :) = pack(keeps%vb(i, :), .not. lspill_list(:)) + keeps%ah(i, :) = pack(keeps%ah(i, :), .not. lspill_list(:)) + keeps%aobl(i, :) = pack(keeps%aobl(i, :), .not. lspill_list(:)) + keeps%agr(i, :) = pack(keeps%agr(i, :), .not. lspill_list(:)) end do end if ! This is the base class, so will be the last to be called in the cascade. @@ -82,11 +86,13 @@ module subroutine util_fill_body(self, inserts, lfill_list) ! For each component, pack the discarded bodies into the discard object and do the inverse with the keeps !> Spill all the common components - associate(keeps => self, insname => inserts%id, keepname => self%id) - + associate(keeps => self) keeps%id(:) = unpack(keeps%id(:), .not.lfill_list(:), keeps%id(:)) keeps%id(:) = unpack(inserts%id(:), lfill_list(:), keeps%id(:)) + keeps%name(:) = unpack(keeps%name(:), .not.lfill_list(:), keeps%name(:)) + keeps%name(:) = unpack(inserts%name(:), lfill_list(:), keeps%name(:)) + keeps%status(:) = unpack(keeps%status(:), .not.lfill_list(:), keeps%status(:)) keeps%status(:) = unpack(inserts%status(:), lfill_list(:), keeps%status(:)) @@ -112,6 +118,8 @@ module subroutine util_fill_body(self, inserts, lfill_list) keeps%aobl(i, :) = unpack(keeps%aobl(i, :), .not.lfill_list(:), keeps%aobl(i, :)) keeps%aobl(i, :) = unpack(inserts%aobl(i, :), lfill_list(:), keeps%aobl(i, :)) + keeps%agr(i, :) = unpack(keeps%agr(i, :), .not.lfill_list(:), keeps%agr(i, :)) + keeps%agr(i, :) = unpack(inserts%agr(i, :), lfill_list(:), keeps%agr(i, :)) end do keeps%a(:) = unpack(keeps%a(:), .not.lfill_list(:), keeps%a(:)) diff --git a/src/whm/whm_gr.f90 b/src/whm/whm_gr.f90 index 363ce5ad4..88018057e 100644 --- a/src/whm/whm_gr.f90 +++ b/src/whm/whm_gr.f90 @@ -78,10 +78,10 @@ module pure subroutine whm_gr_p4_pl(self, param, dt) ! Internals integer(I4B) :: i - associate(n => self%nbody, xj => self%xj, vj => self%vj, status => self%status, c2 => param%inv_c2) - if (n == 0) return - do i = 1,n - call p4_func(xj(:, i), vj(:, i), dt, c2) + associate(pl => self, npl => self%nbody) + if (npl == 0) return + do i = 1, npl + call gr_p4_pos_kick(param, pl%xj(:, i), pl%vj(:, i), dt) end do end associate @@ -97,17 +97,16 @@ module pure subroutine whm_gr_p4_tp(self, param, dt) !! Adapted from David A. Minton's Swifter routine routine gr_whm_p4.f90 implicit none ! Arguments - class(whm_tp), intent(inout) :: self !! Swiftest particle object + class(whm_tp), intent(inout) :: self !! Swiftest particle object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - real(DP), intent(in) :: dt !! Step size + real(DP), intent(in) :: dt !! Step size ! Internals - integer(I4B) :: i + integer(I4B) :: i - associate(n => self%nbody, xh => self%xh, vh => self%vh, status => self%status, c2 => param%inv_c2) - if (n == 0) return - !do concurrent (i = 1:n, status(i) == ACTIVE) - do i = 1, n - call p4_func(xh(:, i), vh(:, i), dt, c2) + associate(tp => self, ntp => self%nbody) + if (ntp == 0) return + do i = 1, ntp + call gr_p4_pos_kick(param, tp%xh(:, i), tp%vh(:, i), dt) end do end associate @@ -121,21 +120,19 @@ module pure subroutine whm_gr_pv2vh_pl(self, param) !! in a WHM object implicit none ! Arguments - class(whm_pl), intent(inout) :: self !! Swiftest particle object + class(whm_pl), intent(inout) :: self !! Swiftest particle object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters ! Internals - integer(I4B) :: i - real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion + integer(I4B) :: i + real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion - associate(n => self%nbody, xh => self%xh, pv => self%vh, status => self%status, mu => self%muj) - if (n == 0) return - allocate(vh, mold = pv) - !do concurrent(i = 1:n, status(i) == ACTIVE) - do i = 1, n - call gr_pseudovel2vel(param, mu(i), xh(:, i), pv(:, i), vh(:, i)) - pv(:, i) = vh(:, i) + associate(pl => self, npl => self%nbody) + if (npl == 0) return + allocate(vh, mold = pl%vh) + do i = 1, npl + call gr_pseudovel2vel(param, pl%mu(i), pl%xh(:, i), pl%vh(:, i), vh(:, i)) end do - deallocate(vh) + call move_alloc(vh, pl%vh) end associate return end subroutine whm_gr_pv2vh_pl @@ -147,21 +144,19 @@ module pure subroutine whm_gr_pv2vh_tp(self, param) !! in a WHM object implicit none ! Arguments - class(whm_tp), intent(inout) :: self !! Swiftest particle object + class(whm_tp), intent(inout) :: self !! Swiftest particle object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters ! Internals integer(I4B) :: i real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion - associate(n => self%nbody, xh => self%xh, pv => self%vh, status => self%status, mu => self%mu) - if (n == 0) return - allocate(vh, mold = pv) - !do concurrent(i = 1:n, status(i) == ACTIVE) - do i = 1, n - call gr_pseudovel2vel(param, mu(i), xh(:, i), pv(:, i), vh(:, i)) - pv(:, i) = vh(:, i) + associate(tp => self, ntp => self%nbody) + if (ntp == 0) return + allocate(vh, mold = tp%vh) + do i = 1, ntp + call gr_pseudovel2vel(param, tp%mu(i), tp%xh(:, i), tp%vh(:, i), vh(:, i)) end do - deallocate(vh) + call move_alloc(vh, tp%vh) end associate return end subroutine whm_gr_pv2vh_tp @@ -173,21 +168,19 @@ module pure subroutine whm_gr_vh2pv_pl(self, param) !! in a WHM object implicit none ! Arguments - class(whm_pl), intent(inout) :: self !! Swiftest particle object + class(whm_pl), intent(inout) :: self !! Swiftest particle object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters ! Internals integer(I4B) :: i real(DP), dimension(:,:), allocatable :: pv !! Temporary holder of pseudovelocity for in-place conversion - associate(n => self%nbody, xh => self%xh, vh => self%vh, status => self%status, mu => self%muj) - if (n == 0) return - allocate(pv, mold = vh) - !do concurrent(i = 1:n, status(i) == ACTIVE) - do i = 1, n - call gr_vel2pseudovel(param, mu(i), xh(:, i), vh(:, i), pv(:, i)) - vh(:, i) = pv(:, i) + associate(pl => self, npl => self%nbody) + if (npl == 0) return + allocate(pv, mold = pl%vh) + do i = 1, npl + call gr_vel2pseudovel(param, pl%mu(i), pl%xh(:, i), pl%vh(:, i), pv(:, i)) end do - deallocate(pv) + call move_alloc(pv, pl%vh) end associate return end subroutine whm_gr_vh2pv_pl @@ -199,137 +192,21 @@ module pure subroutine whm_gr_vh2pv_tp(self, param) !! in a WHM object implicit none ! Arguments - class(whm_tp), intent(inout) :: self !! Swiftest particle object + class(whm_tp), intent(inout) :: self !! Swiftest particle object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters ! Internals integer(I4B) :: i real(DP), dimension(:,:), allocatable :: pv !! Temporary holder of pseudovelocity for in-place conversion - associate(n => self%nbody, xh => self%xh, vh => self%vh, status => self%status, mu => self%mu) - if (n == 0) return - allocate(pv, mold = vh) - !do concurrent(i = 1:n, status(i) == ACTIVE) - do i = 1, n - call gr_vel2pseudovel(param, mu(i), xh(:, i), vh(:, i), pv(:, i)) - vh(:, i) = pv(:, i) + associate(tp => self, ntp => self%nbody) + if (ntp == 0) return + allocate(pv, mold = tp%vh) + do i = 1, ntp + call gr_vel2pseudovel(param, tp%mu(i), tp%xh(:, i), tp%vh(:, i), pv(:, i)) end do - deallocate(pv) + call move_alloc(pv, tp%vh) end associate return end subroutine whm_gr_vh2pv_tp - pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) - !! author: David A. Minton - !! - !! Converts the heliocentric velocity into a pseudovelocity with relativistic corrections. - !! Uses Newton-Raphson method with direct inversion of the Jacobian (yeah, it's slow, but - !! this is only done once per run). - !! - !! Adapted from David A. Minton's Swifter routine gr_vel2pseudovel.f90 - implicit none - - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body - real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector - real(DP), dimension(:), intent(in) :: vh !! Heliocentric velocity vector - real(DP), dimension(:), intent(out) :: pv !! Pseudovelocity vector - see Saha & Tremain (1994), eq. (32) - - real(DP) :: v2, G, pv2, rterm, det - real(DP), dimension(NDIM,NDIM) :: J,Jinv - real(DP), dimension(NDIM) :: F - integer(I4B) :: n,i,k - integer(I4B), parameter :: MAXITER = 50 - real(DP),parameter :: TOL = 1.0e-12_DP - - associate (c2 => param%inv_c2) - pv(1:NDIM) = vh(1:NDIM) ! Initial guess - rterm = 3 * mu / norm2(xh(:)) - v2 = dot_product(vh(:), vh(:)) - do n = 1, MAXITER - pv2 = dot_product(pv(:), pv(:)) - G = 1.0_DP - c2 * (0.5_DP * pv2 + rterm) - F(:) = pv(:) * G - vh(:) - if (abs(sum(F) / v2 ) < TOL) exit ! Root found - - ! Calculate the Jacobian - !do concurrent (k = 1:NDIM) - ! do concurrent (i = 1:NDIM) - do k = 1, NDIM - do i = 1, NDIM - if (i == k) then - J(i,k) = G - c2 * pv(k) - else - J(i,k) = - c2 * pv(k) - end if - end do - end do - - ! Inverse of the Jacobian - det = J(1,1) * (J(3,3) * J(2,2) - J(3,2) * J(2,3)) - det = det - J(2,1) * (J(3,3) * J(1,2)-J(3,2) * J(1,3)) - det = det + J(3,1) * (J(2,3) * J(1,2)-J(2,2) * J(1,3)) - - Jinv(1,1) = J(3,3) * J(2,2) - J(3,2) * J(2,3) - Jinv(1,2) = -(J(3,3) * J(1,2) - J(3,2) * J(1,3)) - Jinv(1,3) = J(2,3) * J(1,2) - J(2,2) * J(1,3) - - Jinv(2,1) = -(J(3,3) * J(2,1) - J(3,1) * J(2,3)) - Jinv(2,2) = J(3,3) * J(1,1) - J(3,1) * J(1,3) - Jinv(2,3) = -(J(2,3) * J(1,1) - J(2,1) * J(1,3)) - - Jinv(3,1) = J(3,2) * J(2,1) - J(3,1) * J(2,2) - Jinv(3,2) = -(J(3,2) * J(1,1) - J(3,1) * J(1,2)) - Jinv(3,3) = J(2,2) * J(1,1) - J(2,1) * J(1,2) - - Jinv = Jinv * det - - do i = 1, NDIM - pv(i) = pv(i) - dot_product(Jinv(i,:) ,F(:)) - end do - end do - - end associate - return - end subroutine gr_vel2pseudovel - - pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) - !! author: David A. Minton - !! - !! Converts the relativistic pseudovelocity back into a veliocentric velocity - !! Based on Saha & Tremaine (1994) Eq. 32 - !! - !! Adapted from David A. Minton's Swifter routine gr_pseudovel2vel.f90 - implicit none - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - real(DP), intent(in) :: mu !! G * (Mcb + m), G = gravitational constant, Mcb = mass of central body, m = mass of body - real(DP), dimension(:), intent(in) :: xh !! Heliocentric position vector - real(DP), dimension(:), intent(in) :: pv !! Pseudovelocity velocity vector - see Saha & Tremain (1994), eq. (32) - real(DP), dimension(:), intent(out) :: vh !! Heliocentric velocity vector - - real(DP) :: vmag2, rmag, grterm - - associate(c2 => param%inv_c2) - vmag2 = dot_product(pv(:), pv(:)) - rmag = norm2(xh(:)) - grterm = 1.0_DP - c2 * (0.5_DP * vmag2 + 3 * mu / rmag) - vh(:) = pv(:) * grterm - end associate - return - end subroutine gr_pseudovel2vel - - pure subroutine p4_func(x, v, dt, c2) - implicit none - real(DP), dimension(:), intent(inout) :: x - real(DP), dimension(:), intent(in) :: v - real(DP), intent(in) :: dt, c2 - real(DP), dimension(NDIM) :: dr - real(DP) :: vmag2 - - vmag2 = dot_product(v(:), v(:)) - dr(:) = -2 * c2 * vmag2 * v(:) - x(:) = x(:) + dr(:) * dt - - return - end subroutine p4_func - end submodule s_whm_gr \ No newline at end of file diff --git a/src/whm/whm_setup.f90 b/src/whm/whm_setup.f90 index 9598b61ea..b0b25dc55 100644 --- a/src/whm/whm_setup.f90 +++ b/src/whm/whm_setup.f90 @@ -84,21 +84,16 @@ module subroutine whm_setup_system(self, param) call io_read_initialize_system(self, param) ! Make sure that the discard list gets allocated initially call self%tp_discards%setup(self%tp%nbody) - - if (self%pl%nbody > 0) then + call self%pl%set_mu(self%cb) + call self%tp%set_mu(self%cb) + if (param%lgr) then select type(pl => self%pl) class is (whm_pl) - call pl%set_mu(self%cb) - if (param%lgr) call pl%vh2pv(param) - !call pl%eucl_index() + call pl%vh2pv(param) end select - end if - - if (self%tp%nbody > 0) then select type(tp => self%tp) class is (whm_tp) - call tp%set_mu(self%cb) - if (param%lgr) call tp%vh2pv(param) + call tp%vh2pv(param) end select end if From 47c57d0542958e47168d2dceaa044e4e36e353fb Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 12:35:37 -0400 Subject: [PATCH 09/23] Fixed code that allows the central body to have its own id passed to the Python swiftest package --- python/swiftest/swiftest/io.py | 2 +- src/io/io.f90 | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/python/swiftest/swiftest/io.py b/python/swiftest/swiftest/io.py index a2eef84fd..189bfac18 100644 --- a/python/swiftest/swiftest/io.py +++ b/python/swiftest/swiftest/io.py @@ -466,6 +466,7 @@ def swiftest_stream(f, param): npl = f.read_ints() ntp = f.read_ints() iout_form = f.read_reals('c') + cbid = f.read_ints() Mcb = f.read_reals(np.float64) Rcb = f.read_reals(np.float64) J2cb = f.read_reals(np.float64) @@ -508,7 +509,6 @@ def swiftest_stream(f, param): t4 = f.read_reals(np.float64) t5 = f.read_reals(np.float64) t6 = f.read_reals(np.float64) - cbid = np.array([0]) clab, plab, tlab = make_swiftest_labels(param) diff --git a/src/io/io.f90 b/src/io/io.f90 index 57ee2176a..3bcc4359b 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -781,7 +781,7 @@ module subroutine io_read_frame_body(self, iu, param, form, ierr) associate(n => self%nbody) read(iu, iostat = ierr) self%id(1:n) - read(iu, iostat = ierr) self%name(1:n) + !read(iu, iostat = ierr) self%name(1:n) select case (form) case (EL) read(iu, iostat = ierr) self%a(1:n) @@ -830,7 +830,7 @@ module subroutine io_read_frame_cb(self, iu, param, form, ierr) integer(I4B), intent(out) :: ierr !! Error cod read(iu, iostat = ierr) self%id - read(iu, iostat = ierr) self%name + !read(iu, iostat = ierr) self%name read(iu, iostat = ierr) self%Gmass self%mass = self%Gmass / param%GU read(iu, iostat = ierr) self%radius @@ -1085,7 +1085,7 @@ module subroutine io_write_frame_body(self, iu, param) associate(n => self%nbody) if (n == 0) return write(iu) self%id(1:n) - write(iu) self%name(1:n) + !write(iu) self%name(1:n) select case (param%out_form) case (EL) write(iu) self%a(1:n) @@ -1126,7 +1126,7 @@ module subroutine io_write_frame_cb(self, iu, param) class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters write(iu) self%id - write(iu) self%name + !write(iu) self%name write(iu) self%Gmass write(iu) self%radius write(iu) self%j2rp2 From aa4a21ad2dc73bdc6b1d28f063936fc640563be6 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 12:40:42 -0400 Subject: [PATCH 10/23] Fixed whm_gr_test input files and Jupyter notebook, and correct Einstein's name in the constant --- examples/whm_gr_test/param.swifter.in | 2 +- examples/whm_gr_test/param.swiftest.in | 3 +- .../whm_gr_test/swiftest_relativity.ipynb | 62 +++++++++++-------- src/io/io.f90 | 2 +- src/modules/swiftest_globals.f90 | 2 +- 5 files changed, 40 insertions(+), 31 deletions(-) diff --git a/examples/whm_gr_test/param.swifter.in b/examples/whm_gr_test/param.swifter.in index 0582bd1f7..6dbf5ae15 100644 --- a/examples/whm_gr_test/param.swifter.in +++ b/examples/whm_gr_test/param.swifter.in @@ -10,7 +10,7 @@ ISTEP_DUMP 1461 BIN_OUT bin.swifter.dat OUT_TYPE REAL8 OUT_FORM EL -OUT_STAT NEW +OUT_STAT UNKNOWN J2 4.7535806948127355e-12 J4 -2.2473967953572827e-18 CHK_CLOSE yes diff --git a/examples/whm_gr_test/param.swiftest.in b/examples/whm_gr_test/param.swiftest.in index b0d8ac31c..6e7c9ff28 100644 --- a/examples/whm_gr_test/param.swiftest.in +++ b/examples/whm_gr_test/param.swiftest.in @@ -11,7 +11,7 @@ ISTEP_DUMP 1461 BIN_OUT bin.swiftest.dat OUT_TYPE REAL8 OUT_FORM EL -OUT_STAT REPLACE +OUT_STAT UNKNOWN CHK_CLOSE yes CHK_RMIN 0.004650467260962157 CHK_RMAX 1000.0 @@ -23,6 +23,7 @@ ENC_OUT enc.swiftest.dat EXTRA_FORCE no BIG_DISCARD no ROTATION no +TIDES no GR yes MU2KG 1.988409870698051e+30 DU2M 149597870700.0 diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index 0f753993c..ae586907c 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -9,51 +9,59 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", - "import swiftestio as swio\n", + "import swiftest\n", "from astroquery.jplhorizons import Horizons" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Reading Swifter file param.swifter.in\n" + "Reading Swifter file param.swifter.in\n", + "Reading in time 1.000e+03\n", + "Creating Dataset\n", + "Successfully converted 1001 output frames.\n", + "Swifter simulation data stored as xarray DataSet .ds\n" ] } ], "source": [ - "inparfile = 'param.swifter.in'\n", - "paramgr = swio.read_swifter_param(inparfile)\n", - "swifterdat = swio.swifter2xr(paramgr)" + "swiftersim = swiftest.Simulation(param_file=\"param.swifter.in\", codename=\"Swifter\")\n", + "swiftersim.bin2xr()\n", + "swifterdat = swiftersim.ds" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Reading Swiftest file param.swiftest.in\n" + "Reading Swiftest file param.swiftest.in\n", + "Reading in time 1.000e+03\n", + "Creating Dataset\n", + "Successfully converted 1001 output frames.\n", + "Swiftest simulation data stored as xarray DataSet .ds\n" ] } ], "source": [ - "param_file_name = 'param.swiftest.in'\n", - "config = swio.read_swiftest_config(param_file_name)\n", - "swiftestdat = swio.swiftest2xr(config)" + "swiftestsim = swiftest.Simulation(param_file=\"param.swiftest.in\")\n", + "swiftestsim.bin2xr()\n", + "swiftestdat = swiftestsim.ds" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -63,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -77,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -88,18 +96,18 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dvarpi_swiftest = np.diff(varpiswiftest) * 3600 * 100 \n", "dvarpi_swifter = np.diff(varpiswifter) * 3600 * 100 \n", - "dvarpi_obs = np.diff(varpi) / np.diff(t) * 3600 * 100 " + "dvarpi_obs = np.diff(varpi_obs) / np.diff(t) * 3600 * 100 " ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -107,17 +115,17 @@ "output_type": "stream", "text": [ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", - "JPL Horizons : 571.3219335838123\n", - "Swifter GR : 571.1981012667945\n", - "Swiftest GR : 571.1981012549461\n", - "Obs - Swifter : 0.12383231701787104\n", - "Obs - Swiftest : 0.12383232886631326\n", - "Swiftest - Swifter: -1.1848442227346823e-08\n" + "JPL Horizons : 571.3210506300043\n", + "Swifter GR : 571.1981012667947\n", + "Swiftest GR : 1.5844780122245083\n", + "Obs - Swifter : 0.12294936320971743\n", + "Obs - Swiftest : 569.7365726177798\n", + "Swiftest - Swifter: -569.61362325457\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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0Y5ERPpYTU0NmZmZXU8WZ2ZmArBq1Sruvvtunn32WV544QWuueYa9u7dS2dnJ7NmzWLr1q0sW7aMpUuX0tjYyK9//WteeeUVXn31Vf7yl79w8OBB3nrrLW677TaWLl3K17/+dT744APa29u58847ufLKK3niiSd46aWXaGlpoampiddee60rrtdee42kpCSWL1/eVTZhwgS+/vWvf6IOhyfTqaqq6ud3K7JEcCHwIbCQ0PzFDrzUH0GJyBDy8rdh5wd9e8yxp8Gldx9z9SWXXMKKFSuYNm0aS5Ys4Qtf+AIXXHAB8+bN47333gNCzT5z5szh3Xffpb29nYULFx5xjK985Su89dZbLF26lM997nM88cQTrF69umuwuH/+539m8eLFPPbYYzQ2NrJgwYKuK4m3336b9evXk56efsQxN2zY0OsJcfbs2UNpaWmfzDdwIpFMTLPe3Tvd/W13f8Ldn3R3DQ4nIgPOyJEjWbNmDQ8//DBZWVl84Qtf4IknniAhIYEpU6awadMmVq1axY033sgbb7zBm2++ecIB44726quvcvfdd1NUVMSiRYtoaWlhx44dAFx88cWfSAI9+cd//EdOP/10zjzzzK6yN998k7lz5zJ27FiWLl3K2LFjI6v8SYj4riERkYgc55t7f4qPj2fRokUsWrSI0047jSeffJJly5Zx3nnn8fLLL5OYmMiSJUtYtmwZHR0dn5ib+ETcnWeeeYbp06cfUf7OO+8ccxjq2bNn88wzz3Qt/+xnP6O+vp7i4o+H/znvvPN48cUX+eijj/jUpz7FVVddRVFRUUSxRUpjDYnIkFNSUkJpaWnX8rp165gwYQIQGj76/vvv5+yzzyYrK4uGhgY2b97M7NnHnzdh1KhR7N//8R3zn/70p/npT3/aNZ/A4San41m8eDEtLS38/Oc/7yprbm7ucdtp06Zx2223cc8995zwuKcqkrGG/qeZpfVnMCIifeHAgQNcf/31zJo1i7lz57Jx40buvPNOIDT+f21tbVfb+9y5c5k7dy49TIx4hAsvvJCNGzdSVFTEU089xe23305bWxtz585lzpw53H777SeMy8x4/vnnef3115k4cSILFizg+uuvP+aH/fLly3njjTfYtm1bZG9AhHo9DLWZfY/QXMNrCc0h8Eqs5g3QMNQiA9tAGIY66PplGGp3/y4wFfgPYBlQambf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\n", "text/plain": [ "
" ] @@ -163,9 +171,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "swiftestOOF", "language": "python", - "name": "python3" + "name": "swiftestoof" }, "language_info": { "codemirror_mode": { @@ -177,7 +185,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/src/io/io.f90 b/src/io/io.f90 index 3bcc4359b..8a6ea4ae2 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -229,7 +229,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) self%GU = GC / (self%DU2M**3 / (self%MU2KG * self%TU2S**2)) ! Calculate the inverse speed of light in the system units - self%inv_c2 = einstinC * self%TU2S / self%DU2M + self%inv_c2 = einsteinC * self%TU2S / self%DU2M self%inv_c2 = (self%inv_c2)**(-2) if (integrator == RMVS) then diff --git a/src/modules/swiftest_globals.f90 b/src/modules/swiftest_globals.f90 index 91db0adf3..256c4124b 100644 --- a/src/modules/swiftest_globals.f90 +++ b/src/modules/swiftest_globals.f90 @@ -121,6 +121,6 @@ module swiftest_globals real(DP), parameter :: VSMALL = 4.0E-15_DP real(DP), parameter :: GC = 6.6743E-11_DP !! Universal gravitational constant in SI units - real(DP), parameter :: einstinC = 299792458.0_DP !! Speed of light in SI units + real(DP), parameter :: einsteinC = 299792458.0_DP !! Speed of light in SI units end module swiftest_globals From da929afa4756a29f39861f4c08afbbef3a5ae825 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 13:02:12 -0400 Subject: [PATCH 11/23] Fixed integrator identification problem in the parameter file reader --- src/gr/gr.f90 | 32 +++++++++++++------------- src/io/io.f90 | 39 ++++++++++++++++---------------- src/modules/swiftest_classes.f90 | 4 ++-- 3 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/gr/gr.f90 b/src/gr/gr.f90 index 2cb200efa..fd441c03b 100644 --- a/src/gr/gr.f90 +++ b/src/gr/gr.f90 @@ -21,7 +21,7 @@ module pure subroutine gr_getaccb_ns_body(self, system, param) real(DP) :: rmag, rdotv, vmag2 integer(I4B) :: i - associate(n => self%nbody, cb => system%cb, inv_c2 => param%inv_c2) + associate(n => self%nbody, cb => system%cb, inv_c2 => param%inv_c2) if (n == 0) return do i = 1, n rmag = norm2(self%xh(:,i)) @@ -92,10 +92,10 @@ module pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) ! Internals real(DP) :: vmag2, rmag, grterm - associate(c2 => param%inv_c2) + associate(inv_c2 => param%inv_c2) vmag2 = dot_product(pv(:), pv(:)) rmag = norm2(xh(:)) - grterm = 1.0_DP - c2 * (0.5_DP * vmag2 + 3 * mu / rmag) + grterm = 1.0_DP - inv_c2 * (0.5_DP * vmag2 + 3 * mu / rmag) vh(:) = pv(:) * grterm end associate return @@ -128,52 +128,52 @@ module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) integer(I4B), parameter :: MAXITER = 50 real(DP),parameter :: TOL = 1.0e-12_DP - associate (c2 => param%inv_c2) + associate(inv_c2 => param%inv_c2) pv(1:NDIM) = vh(1:NDIM) ! Initial guess rterm = 3 * mu / norm2(xh(:)) v2 = dot_product(vh(:), vh(:)) do n = 1, MAXITER pv2 = dot_product(pv(:), pv(:)) - G = 1.0_DP - c2 * (0.5_DP * pv2 + rterm) + G = 1.0_DP - inv_c2 * (0.5_DP * pv2 + rterm) F(:) = pv(:) * G - vh(:) if (abs(sum(F) / v2 ) < TOL) exit ! Root found - + ! Calculate the Jacobian do k = 1, NDIM do i = 1, NDIM if (i == k) then - J(i,k) = G - c2 * pv(k) + J(i,k) = G - inv_c2 * pv(k) else - J(i,k) = - c2 * pv(k) + J(i,k) = -inv_c2 * pv(k) end if end do end do - + ! Inverse of the Jacobian det = J(1,1) * (J(3,3) * J(2,2) - J(3,2) * J(2,3)) det = det - J(2,1) * (J(3,3) * J(1,2)-J(3,2) * J(1,3)) det = det + J(3,1) * (J(2,3) * J(1,2)-J(2,2) * J(1,3)) - + Jinv(1,1) = J(3,3) * J(2,2) - J(3,2) * J(2,3) Jinv(1,2) = -(J(3,3) * J(1,2) - J(3,2) * J(1,3)) Jinv(1,3) = J(2,3) * J(1,2) - J(2,2) * J(1,3) - + Jinv(2,1) = -(J(3,3) * J(2,1) - J(3,1) * J(2,3)) Jinv(2,2) = J(3,3) * J(1,1) - J(3,1) * J(1,3) Jinv(2,3) = -(J(2,3) * J(1,1) - J(2,1) * J(1,3)) - + Jinv(3,1) = J(3,2) * J(2,1) - J(3,1) * J(2,2) Jinv(3,2) = -(J(3,2) * J(1,1) - J(3,1) * J(1,2)) Jinv(3,3) = J(2,2) * J(1,1) - J(2,1) * J(1,2) - + Jinv = Jinv * det - + do i = 1, NDIM - pv(i) = pv(i) - dot_product(Jinv(i,:) ,F(:)) + pv(i) = pv(i) - dot_product(Jinv(i,:), F(:)) end do end do - end associate + return end subroutine gr_vel2pseudovel diff --git a/src/io/io.f90 b/src/io/io.f90 index 8a6ea4ae2..dc479da5f 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -29,10 +29,9 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) character(STRMAX) :: line !! Line of the input file character (len=:), allocatable :: line_trim,param_name, param_value !! Strings used to parse the param file character(*),parameter :: linefmt = '(A)' !! Format code for simple text string - integer(I4B) :: integrator !! Symbolic name of integrator being used - integrator = v_list(1) ! Parse the file line by line, extracting tokens then matching them up with known parameters if possible + do read(unit = unit, fmt = linefmt, iostat = iostat, end = 1) line line_trim = trim(adjustl(line)) @@ -214,7 +213,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) write(*,*) "ENC_OUT = ",trim(adjustl(self%encounter_file)) write(*,*) "EXTRA_FORCE = ",self%lextra_force write(*,*) "BIG_DISCARD = ",self%lbig_discard - if (self%lenergy) write(*,*) "ENERGY = ",self%lenergy + write(*,*) "ENERGY = ",self%lenergy write(*,*) "MU2KG = ",self%MU2KG write(*,*) "TU2S = ",self%TU2S write(*,*) "DU2M = ",self%DU2M @@ -232,21 +231,23 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) self%inv_c2 = einsteinC * self%TU2S / self%DU2M self%inv_c2 = (self%inv_c2)**(-2) - if (integrator == RMVS) then - if (.not.self%lclose) then - write(iomsg,*) 'This integrator requires CHK_CLOSE to be enabled.' - iostat = -1 - return + associate(integrator => v_list(1)) + if (integrator == RMVS) then + if (.not.self%lclose) then + write(iomsg,*) 'This integrator requires CHK_CLOSE to be enabled.' + iostat = -1 + return + end if end if - end if - - ! Determine if the GR flag is set correctly for this integrator - select case(integrator) - case(WHM, RMVS) - write(*,*) "GR = ", self%lgr - case default - write(iomsg, *) 'GR is not yet implemented for this integrator. This parameter will be ignored.' - end select + + ! Determine if the GR flag is set correctly for this integrator + select case(integrator) + case(WHM, RMVS) + write(*,*) "GR = ", self%lgr + case default + write(iomsg, *) 'GR is not yet implemented for this integrator. This parameter will be ignored.' + end select + end associate iostat = 0 @@ -682,8 +683,8 @@ module subroutine io_read_param_in(self, param_file_name) !! Adapted from Martin Duncan's Swift routine io_init_param.f implicit none ! Arguments - class(swiftest_parameters),intent(out) :: self !! Current run configuration parameters - character(len=*), intent(in) :: param_file_name !! Parameter input file name (i.e. param.in) + class(swiftest_parameters),intent(inout) :: self !! Current run configuration parameters + character(len=*), intent(in) :: param_file_name !! Parameter input file name (i.e. param.in) ! Internals integer(I4B), parameter :: LUN = 7 !! Unit number of input file integer(I4B) :: ierr = 0 !! Input error code diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 0e8a0a3f5..6c81a1a11 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -488,8 +488,8 @@ end subroutine io_read_cb_in module subroutine io_read_param_in(self, param_file_name) implicit none - class(swiftest_parameters), intent(out) :: self !! Current run configuration parameters - character(len=*), intent(in) :: param_file_name !! Parameter input file name (i.e. param.in) + class(swiftest_parameters), intent(inout) :: self !! Current run configuration parameters + character(len=*), intent(in) :: param_file_name !! Parameter input file name (i.e. param.in) end subroutine io_read_param_in module subroutine io_read_frame_body(self, iu, param, form, ierr) From d5beef4eca32d6300dfed575e0eb48dd1718f22c Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 16:00:31 -0400 Subject: [PATCH 12/23] Fixed GR example and other bug fixes related to gr acceleration terms --- .../helio_swifter_comparison/init_cond.py | 6 +- examples/whm_gr_test/cb.swiftest.in | 2 +- examples/whm_gr_test/init_cond.py | 269 +++--------------- examples/whm_gr_test/param.swifter.in | 54 ++-- examples/whm_gr_test/param.swiftest.in | 65 +++-- examples/whm_gr_test/pl.swifter.in | 72 +++-- examples/whm_gr_test/pl.swiftest.in | 70 +++-- .../whm_gr_test/swiftest_relativity.ipynb | 16 +- src/modules/swiftest_classes.f90 | 4 +- src/whm/whm_getacch.f90 | 7 +- 10 files changed, 192 insertions(+), 373 deletions(-) mode change 100644 => 100755 examples/whm_gr_test/init_cond.py diff --git a/examples/helio_swifter_comparison/init_cond.py b/examples/helio_swifter_comparison/init_cond.py index 7e45bb4bb..4680d9e0a 100644 --- a/examples/helio_swifter_comparison/init_cond.py +++ b/examples/helio_swifter_comparison/init_cond.py @@ -1,9 +1,5 @@ +#!/usr/bin/env python3 import swiftest -import numpy as np -import sys -from astroquery.jplhorizons import Horizons -import astropy.constants as const -from scipy.io import FortranFile sim = swiftest.Simulation() diff --git a/examples/whm_gr_test/cb.swiftest.in b/examples/whm_gr_test/cb.swiftest.in index 46a8d0257..058975b81 100644 --- a/examples/whm_gr_test/cb.swiftest.in +++ b/examples/whm_gr_test/cb.swiftest.in @@ -1,4 +1,4 @@ -1.0 +39.476926408897626 0.004650467260962157 4.7535806948127355e-12 -2.2473967953572827e-18 diff --git a/examples/whm_gr_test/init_cond.py b/examples/whm_gr_test/init_cond.py old mode 100644 new mode 100755 index 7904eb100..c2580cddb --- a/examples/whm_gr_test/init_cond.py +++ b/examples/whm_gr_test/init_cond.py @@ -1,226 +1,51 @@ -import numpy as np -import sys -from astroquery.jplhorizons import Horizons -import astropy.constants as const - -#Values from JPL Horizons -AU2M = const.au.value -GMSunSI = const.GM_sun.value -Rsun = const.R_sun.value -GC = const.G.value -JD = 86400 -year = 365.25 * JD -c = 299792458.0 -MSun_over_Mpl = [6023600.0, - 408523.71, - 328900.56, - 3098708., - 1047.3486, - 3497.898, - 22902.98, - 19412.24, - 1.35e8] - -MU2KG = GMSunSI / GC #Conversion from mass unit to kg -DU2M = AU2M #Conversion from radius unit to centimeters -TU2S = year #Conversion from time unit to seconds -GU = GC / (DU2M**3 / (MU2KG * TU2S**2)) - -GMSun = GMSunSI / (DU2M**3 / TU2S**2) - -t_print = 10.e0 * year / TU2S #output interval to print results -deltaT = 0.25 * JD / TU2S #timestep simulation -end_sim = 1.0e3 * year / TU2S + t_print #end time - -# Solar oblatenes values: From Mecheri et al. (2004), using Corbard (b) 2002 values (Table II) -J2 = 2.198e-7 * (Rsun / DU2M)**2 -J4 = -4.805e-9 * (Rsun / DU2M)**4 - -tstart = '2021-01-28' -tend = '2021-01-29' -tstep = '1d' -planetid = { - 'mercury' : '1', - 'venus' : '2', - 'earthmoon' : '3', - 'mars' : '4', - 'jupiter' : '5', - 'saturn' : '6', - 'uranus' : '7', - 'neptune' : '8', - 'plutocharon' : '9' +#!/usr/bin/env python3 +import swiftest + +sim = swiftest.Simulation() + +sim.param['MU2KG'] = swiftest.MSun +sim.param['TU2S'] = swiftest.YR2S +sim.param['DU2M'] = swiftest.AU2M +sim.param['T0'] = 0.0 +sim.param['DT'] = 0.25 * swiftest.JD2S / swiftest.YR2S +sim.param['TSTOP'] = 1000.0 +sim.param['ISTEP_OUT'] = 1461 +sim.param['ISTEP_DUMP'] = 1461 +sim.param['CHK_QMIN_COORD'] = "HELIO" +sim.param['CHK_QMIN'] = swiftest.RSun / swiftest.AU2M +sim.param['CHK_QMIN_RANGE'] = f"{swiftest.RSun / swiftest.AU2M} 1000.0" +sim.param['CHK_RMIN'] = swiftest.RSun / swiftest.AU2M +sim.param['CHK_RMAX'] = 1000.0 +sim.param['CHK_EJECT'] = 1000.0 +sim.param['OUT_FORM'] = "EL" +sim.param['OUT_STAT'] = "UNKNOWN" +sim.param['GR'] = 'YES' + +bodyid = { + "Sun": 0, + "Mercury": 1, + "Venus": 2, + "Earth": 3, + "Mars": 4, + "Jupiter": 5, + "Saturn": 6, + "Uranus": 7, + "Neptune": 8, } -npl = 9 - -#Planet Msun/M ratio -MSun_over_Mpl = { - 'mercury' : 6023600.0, - 'venus' : 408523.71, - 'earthmoon' : 328900.56, - 'mars' : 3098708., - 'jupiter' : 1047.3486, - 'saturn' : 3497.898, - 'uranus' : 22902.98, - 'neptune' : 19412.24, - 'plutocharon' : 1.35e8 -} - -#Planet radii in meters -Rpl = { - 'mercury' : 2439.4e3, - 'venus' : 6051.8e3, - 'earthmoon' : 6371.0084e3, # Earth only for radius - 'mars' : 3389.50e3, - 'jupiter' : 69911e3, - 'saturn' : 58232.0e3, - 'uranus' : 25362.e3, - 'neptune' : 24622.e3, - 'plutocharon' : 1188.3e3 -} - -pdata = {} -plvec = {} -Rhill = {} - -for key,val in planetid.items(): - pdata[key] = Horizons(id=val, id_type='majorbody',location='@sun', - epochs={'start': tstart, 'stop': tend, - 'step': tstep}) - plvec[key] = np.array([pdata[key].vectors()['x'][0], - pdata[key].vectors()['y'][0], - pdata[key].vectors()['z'][0], - pdata[key].vectors()['vx'][0], - pdata[key].vectors()['vy'][0], - pdata[key].vectors()['vz'][0] - ]) - Rhill[key] = pdata[key].elements()['a'][0] * (3 * MSun_over_Mpl[key])**(-1.0 / 3.0) - - -if __name__ == '__main__': - # Convert from AU-day to AU-year just because I find it easier to keep track of the sim progress - for plid in plvec: - plvec[plid][3:] *= year / JD - - # Names of all output files - swifter_input = "param.swifter.in" - swifter_pl = "pl.swifter.in" - swifter_tp = "tp.swifter.in" - swifter_bin = "bin.swifter.dat" - swifter_enc = "enc.swifter.dat" - - swiftest_input = "param.swiftest.in" - swiftest_pl = "pl.swiftest.in" - swiftest_tp = "tp.swiftest.in" - swiftest_cb = "cb.swiftest.in" - swiftest_bin = "bin.swiftest.dat" - swiftest_enc = "enc.swiftest.dat" - - # Simulation start, stop, and output cadence times - t_0 = 0 # simulation start time - end_sim = 1000.0e0 * year / TU2S # simulation end time - deltaT = 0.25 * JD / TU2S # simulation step size - t_print = 1.0 * year / TU2S #output interval to print results - - iout = int(np.ceil(t_print / deltaT)) - rmin = Rsun / DU2M - rmax = 1000.0 - - #Make Swifter files - plfile = open(swifter_pl, 'w') - print(f'{npl+1} ! Planet input file generated using init_cond.py using JPL Horizons data for the major planets (and Pluto) for epoch {tstart}' ,file=plfile) - print(f'1 {GMSun}',file=plfile) - print(f'0.0 0.0 0.0',file=plfile) - print(f'0.0 0.0 0.0',file=plfile) - for i, plid in enumerate(plvec): - print(f'{i + 2} {GMSun / MSun_over_Mpl[plid]} {Rhill[plid]}', file=plfile) - print(f'{Rpl[plid] / DU2M}', file=plfile) - print(f'{plvec[plid][0]} {plvec[plid][1]} {plvec[plid][2]}', file=plfile) - print(f'{plvec[plid][3]} {plvec[plid][4]} {plvec[plid][5]}', file=plfile) - plfile.close() - - tpfile = open(swifter_tp, 'w') - print(0,file=tpfile) - tpfile.close() - - sys.stdout = open(swifter_input, "w") - print(f'! Swifter input file generated using init_cond.py') - print(f'T0 {t_0} ') - print(f'TSTOP {end_sim}') - print(f'DT {deltaT}') - print(f'PL_IN {swifter_pl}') - print(f'TP_IN {swifter_tp}') - print(f'IN_TYPE ASCII') - print(f'ISTEP_OUT {iout:d}') - print(f'ISTEP_DUMP {iout:d}') - print(f'BIN_OUT {swifter_bin}') - print(f'OUT_TYPE REAL8') - print(f'OUT_FORM EL') - print(f'OUT_STAT NEW') - print(f'J2 {J2}') - print(f'J4 {J4}') - print(f'CHK_CLOSE yes') - print(f'CHK_RMIN {rmin}') - print(f'CHK_RMAX {rmax}') - print(f'CHK_EJECT {rmax}') - print(f'CHK_QMIN {rmin}') - print(f'CHK_QMIN_COORD HELIO') - print(f'CHK_QMIN_RANGE {rmin} {rmax}') - print(f'ENC_OUT {swifter_enc}') - print(f'EXTRA_FORCE no') - print(f'BIG_DISCARD no') - print(f'RHILL_PRESENT yes') - print(f'C {c / (DU2M / TU2S)}') - - #Now make Swiftest files - cbfile = open(swiftest_cb, 'w') - print(f'{1.0}',file=cbfile) - print(f'{rmin}',file=cbfile) - print(f'{J2}',file=cbfile) - print(f'{J4}',file=cbfile) - - plfile = open(swiftest_pl, 'w') - print(npl,file=plfile) - - for i, plid in enumerate(plvec): - print(f'{i + 2} {1.0 / MSun_over_Mpl[plid]}', file=plfile) - print(f'{Rpl[plid] / DU2M}', file=plfile) - print(f'{plvec[plid][0]} {plvec[plid][1]} {plvec[plid][2]}', file=plfile) - print(f'{plvec[plid][3]} {plvec[plid][4]} {plvec[plid][5]}', file=plfile) - plfile.close() - tpfile = open(swiftest_tp, 'w') - print(0,file=tpfile) - tpfile.close() - sys.stdout = open(swiftest_input, "w") - print(f'! Swiftest input file generated using init_cond.py') - print(f'T0 {t_0} ') - print(f'TSTOP {end_sim}') - print(f'DT {deltaT}') - print(f'CB_IN {swiftest_cb}') - print(f'PL_IN {swiftest_pl}') - print(f'TP_IN {swiftest_tp}') - print(f'IN_TYPE ASCII') - print(f'ISTEP_OUT {iout:d}') - print(f'ISTEP_DUMP {iout:d}') - print(f'BIN_OUT {swiftest_bin}') - print(f'OUT_TYPE REAL8') - print(f'OUT_FORM EL') - print(f'OUT_STAT REPLACE') - print(f'CHK_CLOSE yes') - print(f'CHK_RMIN {rmin}') - print(f'CHK_RMAX {rmax}') - print(f'CHK_EJECT {rmax}') - print(f'CHK_QMIN {rmin}') - print(f'CHK_QMIN_COORD HELIO') - print(f'CHK_QMIN_RANGE {rmin} {rmax}') - print(f'ENC_OUT {swiftest_enc}') - print(f'EXTRA_FORCE no') - print(f'BIG_DISCARD no') - print(f'ROTATION no') - print(f'GR yes') - print(f'MU2KG {MU2KG}') - print(f'DU2M {DU2M}') - print(f'TU2S {TU2S}') +for name, id in bodyid.items(): + sim.add(name, idval=id) + +sim.param['PL_IN'] = "pl.swiftest.in" +sim.param['TP_IN'] = "tp.swiftest.in" +sim.param['CB_IN'] = "cb.swiftest.in" +sim.param['BIN_OUT'] = "bin.swiftest.dat" +sim.param['ENC_OUT'] = "enc.swiftest.dat" +sim.save("param.swiftest.in") +sim.param['PL_IN'] = "pl.swifter.in" +sim.param['TP_IN'] = "tp.swifter.in" +sim.param['BIN_OUT'] = "bin.swifter.dat" +sim.param['ENC_OUT'] = "enc.swifter.dat" +sim.save("param.swifter.in", codename="Swifter") - sys.stdout = sys.__stdout__ diff --git a/examples/whm_gr_test/param.swifter.in b/examples/whm_gr_test/param.swifter.in index 6dbf5ae15..789250f41 100644 --- a/examples/whm_gr_test/param.swifter.in +++ b/examples/whm_gr_test/param.swifter.in @@ -1,27 +1,27 @@ -! Swifter input file generated using init_cond.py -T0 0 -TSTOP 1000.0 -DT 0.0006844626967830253 -PL_IN pl.swifter.in -TP_IN tp.swifter.in -IN_TYPE ASCII -ISTEP_OUT 1461 -ISTEP_DUMP 1461 -BIN_OUT bin.swifter.dat -OUT_TYPE REAL8 -OUT_FORM EL -OUT_STAT UNKNOWN -J2 4.7535806948127355e-12 -J4 -2.2473967953572827e-18 -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swifter.dat -EXTRA_FORCE no -BIG_DISCARD no -RHILL_PRESENT yes -C 63241.07708426628 +! VERSION Swifter parameter file converted from Swiftest +T0 0.0 +TSTOP 1000.0 +DT 0.0006844626967830253 +ISTEP_OUT 1461 +ISTEP_DUMP 1461 +OUT_FORM EL +OUT_TYPE REAL8 +OUT_STAT UNKNOWN +IN_TYPE ASCII +PL_IN pl.swifter.in +TP_IN tp.swifter.in +BIN_OUT bin.swifter.dat +ENC_OUT enc.swifter.dat +CHK_QMIN 0.004650467260962157 +CHK_RMIN 0.004650467260962157 +CHK_RMAX 1000.0 +CHK_EJECT 1000.0 +CHK_QMIN_COORD HELIO +CHK_QMIN_RANGE 0.004650467260962157 1000.0 +EXTRA_FORCE NO +BIG_DISCARD NO +CHK_CLOSE YES +C 63241.07708426628 +J2 4.7535806948127355e-12 +J4 -2.2473967953572827e-18 +RHILL_PRESENT YES diff --git a/examples/whm_gr_test/param.swiftest.in b/examples/whm_gr_test/param.swiftest.in index 6e7c9ff28..ace6f3cad 100644 --- a/examples/whm_gr_test/param.swiftest.in +++ b/examples/whm_gr_test/param.swiftest.in @@ -1,30 +1,35 @@ -! Swiftest input file generated using init_cond.py -T0 0 -TSTOP 1000.0 -DT 0.0006844626967830253 -CB_IN cb.swiftest.in -PL_IN pl.swiftest.in -TP_IN tp.swiftest.in -IN_TYPE ASCII -ISTEP_OUT 1461 -ISTEP_DUMP 1461 -BIN_OUT bin.swiftest.dat -OUT_TYPE REAL8 -OUT_FORM EL -OUT_STAT UNKNOWN -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swiftest.dat -EXTRA_FORCE no -BIG_DISCARD no -ROTATION no -TIDES no -GR yes -MU2KG 1.988409870698051e+30 -DU2M 149597870700.0 -TU2S 31557600.0 +! VERSION Swiftest parameter input +T0 0.0 +TSTOP 1000.0 +DT 0.0006844626967830253 +ISTEP_OUT 1461 +ISTEP_DUMP 1461 +OUT_FORM EL +OUT_TYPE REAL8 +OUT_STAT UNKNOWN +IN_TYPE ASCII +PL_IN pl.swiftest.in +TP_IN tp.swiftest.in +CB_IN cb.swiftest.in +BIN_OUT bin.swiftest.dat +ENC_OUT enc.swiftest.dat +CHK_QMIN 0.004650467260962157 +CHK_RMIN 0.004650467260962157 +CHK_RMAX 1000.0 +CHK_EJECT 1000.0 +CHK_QMIN_COORD HELIO +CHK_QMIN_RANGE 0.004650467260962157 1000.0 +MU2KG 1.988409870698051e+30 +TU2S 31557600.0 +DU2M 149597870700.0 +EXTRA_FORCE NO +BIG_DISCARD NO +CHK_CLOSE YES +FRAGMENTATION NO +ROTATION NO +TIDES NO +ENERGY NO +GR YES +YARKOVSKY NO +YORP NO +MTINY 0.0 diff --git a/examples/whm_gr_test/pl.swifter.in b/examples/whm_gr_test/pl.swifter.in index 60d090453..fb614bcbd 100644 --- a/examples/whm_gr_test/pl.swifter.in +++ b/examples/whm_gr_test/pl.swifter.in @@ -1,40 +1,36 @@ -10 ! Planet input file generated using init_cond.py using JPL Horizons data for the major planets (and Pluto) for epoch 2021-01-28 -1 39.476926408897626 +9 +0 39.476926408897625196 0.0 0.0 0.0 0.0 0.0 0.0 -2 6.553709809565314e-06 0.001475122968086379 -1.6306381826061646e-05 -0.1030256860922895 0.2897796047098886 0.01422904600374035 --11.74004209950937 3.8343124110162736 1.3902496665973592 -3 9.663313399581537e-05 0.006759127649782299 -4.0453784346544176e-05 -0.06110218027254217 -0.7245466901305982 -0.01346904300924688 -7.311995449678243 0.5941125721336201 -0.4137913843379075 -4 0.00012002693582795245 0.010044756567546644 -4.25875607065041e-05 --0.6061796342297583 0.7761214554702035 -3.4750047790977e-05 --5.054824314301841 -3.891667468503358 0.00019720338148272726 -5 1.2739802010675942e-05 0.0072464490746299084 -2.2657408050928896e-05 -0.2751944175855944 1.51937688993241 0.02508924593104206 --4.835983593209577 1.344855094041679 0.14681413000004515 -6 0.037692251088985676 0.3552852357486061 -0.0004673261703049093 -3.200135438345358 -3.953498213518368 -0.05517737289975112 -2.111393749129838 1.8660266890185446 -0.05498941067210089 -7 0.011285899820091273 0.4376306456694341 -0.00038925687730393614 -5.607382165725712 -8.258649105608766 -0.07958445228024298 -1.5748468603228847 1.1414574661825514 -0.08250331331320372 -8 0.001723658947826773 0.4690969274244374 -0.00016953449859497232 -15.28225422201768 12.53905314208462 -0.1514143582550325 --0.9198472198098231 1.0454390993472462 0.01574538863031621 -9 0.0020336100526728304 0.7807192056765467 -0.00016458790412449367 -29.47483071169769 -5.147686530859088 -0.5733441819169969 -0.19191677740340274 1.1385110364087574 -0.027844325148353527 -10 2.924216771029454e-07 0.0538346817277698 -7.943294877391593e-06 -14.14000920780611 -31.14141812522779 -0.7565722591093476 -1.073396108697069 0.23003123192799815 -0.33424529561177047 +1 6.5537098095653139645e-06 0.0014751244996981091688 +1.6306381826061645943e-05 +0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 +-3.3367255059737357791 10.64622790896598922 1.1760542104884461008 +2 9.663313399581537916e-05 0.006759105927487850036 +4.0453784346544178454e-05 +-0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 +-0.12984901004910088259 -7.4200262222437848615 -0.09433956287915627552 +3 0.000120026935827952453094 0.010044781409779763954 +4.25875607065040958e-05 +0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 +5.817808761117269037 2.0836935934869021533 -0.00011769228482089048983 +4 1.2739802010675941456e-05 0.007246745952808948377 +2.265740805092889601e-05 +-1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 +-1.908390450061588966 -4.22386803675231535 -0.041705300362175825686 +5 0.037692251088985676735 0.35527129445679039879 +0.00046732617030490929307 +4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 +1.6095092959604531543 2.3468202746428659788 -0.045756236082127820444 +6 0.011285899820091272997 0.43765252895139074356 +0.00038925687730393611812 +6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 +1.466832763395646828 1.2863740305106504463 -0.0807227702193550598 +7 0.0017236589478267730203 0.4695335374930126262 +0.00016953449859497231466 +14.8586976850394894 13.004806892491039605 -0.14422203290693380584 +-0.9552190982402187873 1.0163552941629989916 0.016097455433874226457 +8 0.0020336100526728302319 0.78128379442879379807 +0.000164587904124493665 +29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 +0.17174414812321077623 1.1422632832628163399 -0.02744788192962509712 diff --git a/examples/whm_gr_test/pl.swiftest.in b/examples/whm_gr_test/pl.swiftest.in index 032262e70..874012fc6 100644 --- a/examples/whm_gr_test/pl.swiftest.in +++ b/examples/whm_gr_test/pl.swiftest.in @@ -1,37 +1,33 @@ -9 -2 1.6601367952719304e-07 -1.6306381826061646e-05 -0.1030256860922895 0.2897796047098886 0.01422904600374035 --11.74004209950937 3.8343124110162736 1.3902496665973592 -3 2.4478383396645447e-06 -4.0453784346544176e-05 -0.06110218027254217 -0.7245466901305982 -0.01346904300924688 -7.311995449678243 0.5941125721336201 -0.4137913843379075 -4 3.0404326462685257e-06 -4.25875607065041e-05 --0.6061796342297583 0.7761214554702035 -3.4750047790977e-05 --5.054824314301841 -3.891667468503358 0.00019720338148272726 -5 3.2271514450538743e-07 -2.2657408050928896e-05 -0.2751944175855944 1.51937688993241 0.02508924593104206 --4.835983593209577 1.344855094041679 0.14681413000004515 -6 0.0009547919384243222 -0.0004673261703049093 -3.200135438345358 -3.953498213518368 -0.05517737289975112 -2.111393749129838 1.8660266890185446 -0.05498941067210089 -7 0.0002858859806661029 -0.00038925687730393614 -5.607382165725712 -8.258649105608766 -0.07958445228024298 -1.5748468603228847 1.1414574661825514 -0.08250331331320372 -8 4.3662440433515637e-05 -0.00016953449859497232 -15.28225422201768 12.53905314208462 -0.1514143582550325 --0.9198472198098231 1.0454390993472462 0.01574538863031621 -9 5.151389020535497e-05 -0.00016458790412449367 -29.47483071169769 -5.147686530859088 -0.5733441819169969 -0.19191677740340274 1.1385110364087574 -0.027844325148353527 -10 7.407407407407407e-09 -7.943294877391593e-06 -14.14000920780611 -31.14141812522779 -0.7565722591093476 -1.073396108697069 0.23003123192799815 -0.33424529561177047 +8 +1 6.5537098095653139645e-06 +1.6306381826061645943e-05 +0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 +-3.3367255059737357791 10.64622790896598922 1.1760542104884461008 +2 9.663313399581537916e-05 +4.0453784346544178454e-05 +-0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 +-0.12984901004910088259 -7.4200262222437848615 -0.09433956287915627552 +3 0.000120026935827952453094 +4.25875607065040958e-05 +0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 +5.817808761117269037 2.0836935934869021533 -0.00011769228482089048983 +4 1.2739802010675941456e-05 +2.265740805092889601e-05 +-1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 +-1.908390450061588966 -4.22386803675231535 -0.041705300362175825686 +5 0.037692251088985676735 +0.00046732617030490929307 +4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 +1.6095092959604531543 2.3468202746428659788 -0.045756236082127820444 +6 0.011285899820091272997 +0.00038925687730393611812 +6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 +1.466832763395646828 1.2863740305106504463 -0.0807227702193550598 +7 0.0017236589478267730203 +0.00016953449859497231466 +14.8586976850394894 13.004806892491039605 -0.14422203290693380584 +-0.9552190982402187873 1.0163552941629989916 0.016097455433874226457 +8 0.0020336100526728302319 +0.000164587904124493665 +29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 +0.17174414812321077623 1.1422632832628163399 -0.02744788192962509712 diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index ae586907c..fe0e42cc9 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -89,8 +89,8 @@ "metadata": {}, "outputs": [], "source": [ - "varpiswiftest = swiftestdat['varpi'].sel(id=2) * 180.0 / np.pi\n", - "varpiswifter = swifterdat['varpi'].sel(id=2) * 180.0 / np.pi\n", + "varpiswiftest = swiftestdat['varpi'].sel(id=1) * 180.0 / np.pi\n", + "varpiswifter = swifterdat['varpi'].sel(id=1) * 180.0 / np.pi\n", "tsim = swiftestdat['time']" ] }, @@ -116,16 +116,16 @@ "text": [ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", "JPL Horizons : 571.3210506300043\n", - "Swifter GR : 571.1981012667947\n", - "Swiftest GR : 1.5844780122245083\n", - "Obs - Swifter : 0.12294936320971743\n", - "Obs - Swiftest : 569.7365726177798\n", - "Swiftest - Swifter: -569.61362325457\n" + "Swifter GR : 571.6748624042897\n", + "Swiftest GR : 571.6748624128945\n", + "Obs - Swifter : -0.3538117742853119\n", + "Obs - Swiftest : -0.35381178289026777\n", + "Swiftest - Swifter: 8.604956747149117e-09\n" ] }, { "data": { - "image/png": "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0Y5ERPpYTU0NmZmZXU8WZ2ZmArBq1Sruvvtunn32WV544QWuueYa9u7dS2dnJ7NmzWLr1q0sW7aMpUuX0tjYyK9//WteeeUVXn31Vf7yl79w8OBB3nrrLW677TaWLl3K17/+dT744APa29u58847ufLKK3niiSd46aWXaGlpoampiddee60rrtdee42kpCSWL1/eVTZhwgS+/vWvf6IOhyfTqaqq6ud3K7JEcCHwIbCQ0PzFDrzUH0GJyBDy8rdh5wd9e8yxp8Gldx9z9SWXXMKKFSuYNm0aS5Ys4Qtf+AIXXHAB8+bN47333gNCzT5z5szh3Xffpb29nYULFx5xjK985Su89dZbLF26lM997nM88cQTrF69umuwuH/+539m8eLFPPbYYzQ2NrJgwYKuK4m3336b9evXk56efsQxN2zY0OsJcfbs2UNpaWmfzDdwIpFMTLPe3Tvd/W13f8Ldn3R3DQ4nIgPOyJEjWbNmDQ8//DBZWVl84Qtf4IknniAhIYEpU6awadMmVq1axY033sgbb7zBm2++ecIB44726quvcvfdd1NUVMSiRYtoaWlhx44dAFx88cWfSAI9+cd//EdOP/10zjzzzK6yN998k7lz5zJ27FiWLl3K2LFjI6v8SYj4riERkYgc55t7f4qPj2fRokUsWrSI0047jSeffJJly5Zx3nnn8fLLL5OYmMiSJUtYtmwZHR0dn5ib+ETcnWeeeYbp06cfUf7OO+8ccxjq2bNn88wzz3Qt/+xnP6O+vp7i4o+H/znvvPN48cUX+eijj/jUpz7FVVddRVFRUUSxRUpjDYnIkFNSUkJpaWnX8rp165gwYQIQGj76/vvv5+yzzyYrK4uGhgY2b97M7NnHnzdh1KhR7N//8R3zn/70p/npT3/aNZ/A4San41m8eDEtLS38/Oc/7yprbm7ucdtp06Zx2223cc8995zwuKcqkrGG/qeZpfVnMCIifeHAgQNcf/31zJo1i7lz57Jx40buvPNOIDT+f21tbVfb+9y5c5k7dy49TIx4hAsvvJCNGzdSVFTEU089xe23305bWxtz585lzpw53H777SeMy8x4/vnnef3115k4cSILFizg+uuvP+aH/fLly3njjTfYtm1bZG9AhHo9DLWZfY/QXMNrCc0h8Eqs5g3QMNQiA9tAGIY66PplGGp3/y4wFfgPYBlQambf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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEGCAYAAAB2EqL0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA40klEQVR4nO3deZxN5R/A8c/3zj72rUWytSjLGIwt2WXPloqUpYRSaUeL5PdTKhVtZFfJElkiS0mhnyyDQgihhiIiDGOW+/39cS+NMcO9zMyZ5ft+ve7LPc89zznf52K+c57nnOcRVcUYY4y5GJfTARhjjMkeLGEYY4zxiSUMY4wxPrGEYYwxxieWMIwxxvgk0OkAMlLRokW1dOnSTodhjDHZRnR09CFVLZbaZzk6YZQuXZp169Y5HYYxxmQbIrI3rc+sS8oYY4xPLGEYY4zxiSUMY4wxPsnRYxipSUhIICYmhri4OKdDyXVCQ0MpUaIEQUFBTodijLkEuS5hxMTEkC9fPkqXLo2IOB1OrqGqHD58mJiYGMqUKeN0OMaYS5DruqTi4uIoUqSIJYtMJiIUKVLEruyMycZyXcIALFk4xL53Y7K3XJkwjDEmp/rs6/d45ZP7SUpKSPdjW8JwQN68edmzZw9hYWFERkZSvnx5+vTpg9vtZs+ePVSsWPGC9QcPHszw4cPPKStdujSHDh3yK46WLVty9OhRf8M3xmRBcaeO0HtCLYbs+5Bv49Zw7MTRdD9Hrhv0zkquu+46Nm7cSGJiIo0aNWLOnDlUrVo1w8+rqqgqX375ZYafyxiT8WZ89TZz93zMT8EJ1DhemG51BlCoQKqze1wWu8LIAgIDA7nlllvYuXNnuhzvrbfeomLFilSsWJERI0YAsGfPHm6++WYefvhhqlatyu+//372qmT06NFERkYSGRlJmTJlaNiwIQBTp06lUqVKVKxYkf79+589ft68eXn++eepXLkytWrV4sCBAwB89tlnVKxYkcqVK1OvXr10aYsxJm0790bTd1xd/rN/Aj8FJ9A0viQf9PmGelVaZMj5cvUVxstfbOHn/cfS9Zjli+fnpdsr+FXn5MmTLF26lCFDhvhc5+233+aTTz45u71//34AoqOjmThxIqtXr0ZVqVmzJvXr16dQoUJs376diRMn8sEHH5xzrD59+tCnTx8SEhJo1KgRTz75JPv376d///5ER0dTqFAhmjZtypw5c2jXrh2xsbHUqlWLoUOH8uyzzzJ27FheeOEFhgwZwuLFi7nmmmusq8uYDOROSuT7TUt5Zd1T7AuEqKNX8uhtz1DlpqaIK+OuA+wKw0G7du0iMjKSOnXq0KpVK1q08P23gieeeIKNGzeefRUvXhyAlStX0r59e/LkyUPevHnp0KEDK1asAKBUqVLUqlUrzWP269ePRo0acfvtt7N27VoaNGhAsWLFCAwMpEuXLixfvhyA4OBgWrduDUC1atXYs2cPAHXq1KF79+6MHTuWpKSkS/lKjDEXsf6X9XSbUIuHf3yamCChV772vNJ9PlXLN8/QZAG5/ArD3yuB9HZmDCM9qWqan+XJkyfNzyZNmsTevXt57733LnqcoKCgs7fIBgQEkJiYCMDo0aNZvXo1CxYsIDIyko0bN1KkSJFLaYYxJoWkxHg+/3Y0Q/aNhWCoGVuIxmXr07n5fzItBrvCyGHq1avHnDlzOHnyJLGxscyePZu6detesE50dDTDhw/nk08+weX9DaVmzZp89913HDp0iKSkJKZOnUr9+vUveJxdu3ZRs2ZNhgwZQtGiRfn999/TrV3G5Faqyu69K2n4URWG7BtLmNvNXa47+E+XxZmaLCATrzBEpBwwPVlRWWAQsAwYDeQF9gBdVPW8gQURaQ6MBAKAcao6LKNjzgiJiYmEhIRccJ/t27dTokSJs9tvv/02d955p0/Hr1q1Kt27d6dGjRoA9OzZkypVqpztNkrNe++9x99//312sDsqKopx48bx6quv0rBhQ1SVli1b0rZt2wue+5lnnmHHjh2oKo0bN6Zy5co+xWyMSduTY2/n65C9BLqESrEhdCx3Lx0aP+5ILHKhrocMO6lIALAPqAnMBJ5W1e9E5H6gjKq+mMr+vwC3ATHAWqCzqv58ofNERUVpygWUtm7dys0335xubfHXjz/+yIMPPsiaNWsci8FJTn//xmQX7826nzlH13Ag0NP9e7erBs/fOy7DZ0wQkWhVjUrtM6fGMBoDu1R1r/fKY7m3/CtgMfBiiv1rADtV9VcAEZkGtAUumDCymtGjR/POO++cvdXVGGNS2n9wN8PnPMpXIXshUKh2Ih+v3TOXKwul/3MV/nIqYXQCpnrfbwbaAHOBO4FrU9n/GiB5h3gMnquT84hIL6AXQMmSJdMp3PRx5vZVY4xJKSExgfFfPMe8wwv5PURwqfLmTS9Qp+qdhAUHOB0e4MCgt4gE40kQn3mL7gf6ikg0kA+IT61aKmWp9qWp6hhVjVLVqGLFnM/IxhhzMT/+PJv+E9vw/rFF/B4kNDlVjqm3vEGTWp2yTLIAZ64wWgDrVfUAgKpuA5oCiMiNQKtU6sRw7pVHCWB/BsdpjDEZKjHJzY9b59Jj3YtosFAqHu4u2ZfWdbpTKG+o0+Gdx4mE0Zl/u6MQkStU9aCIuIAX8NwxldJa4AYRKYNnsLwTcE9mBGuMMRkh7tQRBn7cheVBv+ESqB97E0+0GUzpEs4+H3YhmZowRCQcz51OvZMVdxaRvt73nwMTvfsWx3P7bEtVTRSRR/AMiAcAE1R1SyaGbowx6WbCFw/z9t8rIARujg+kXpFOPNy1Py5X1l4zJlPHMFT1pKoWUdV/kpWNVNUbva8B6r3PV1X3q2rLZPt96d3nOlUdmplxp7ehQ4dSoUIFIiIiiIyMZPXq1T7VGzRoEF9//TUAK1asoEKFCkRGRrJq1ap0mXn2wIED3HPPPZQtW5Zq1apRu3ZtZs+eDcC3335LgQIFqFKlCjfddBNPP/30ZZ/PmNwm9uRxnh3bkw8OeW4Mbe9uyEfd1vJIhwFZPllALp8axAmrVq1i/vz5rF+/npCQEA4dOkR8fGrj/OdLPjnhlClTePrpp+nRoweTJk1i3bp1tGzZ8gK1z5WYmEhg4L9//apKu3bt6NatG59++ikAe/fuZd68eWf3qVu3LvPnz+fUqVNUqVKF9u3bU6dOHZ/PaUxu5XYrz33Ukm/1N2KDXRRPgGcrvUbjKN//z2YFljAy2R9//EHRokXPPu1dtGhRANasWcOwYcP4/PPPmTt3Lp06deKff/7B7XZTvnx5fv31V7p3707r1q05evQoM2bMYPHixSxZsoTvv/+eU6dOsXLlSgYOHEjr1q159NFH2bRpE4mJiQwePJi2bdsyadIkFixYQFxcHLGxsXzzzTdn4/rmm28IDg4+57bfUqVK8eijj57XhjMLP+3bty+Dvy1jsr9V66cya/1UFgfF4ELoHNCCgfcNy/CJAjNC7k4YCwfAn5vS95hXVYIWac9a0rRpU4YMGcKNN95IkyZNuPvuu6lfvz5Vq1Zlw4YNgKe7qWLFiqxdu5bExERq1jz3kZOePXuycuVKWrduTceOHc9eYZyZOPC5556jUaNGTJgwgaNHj1KjRg2aNGkCeK5wfvrpJwoXLnzOMbds2eLz4k1Hjhxhx44dtuaFMRew7+/DfLroZT5KWAZBcNPpAMZ1WUmBPHmdDu2SZb8Ul83lzZuX6OhoxowZQ7Fixbj77ruZNGkSgYGBXH/99WzdupU1a9bw5JNPsnz5clasWHHRyQNTWrJkCcOGDSMyMpIGDRoQFxfHb7/9BsBtt912XrJITd++falcuTLVq1c/W7ZixQoiIiK46qqraN26NVdddZV/jTcmF3AnJbJ951f0n9GMjxKWEeZ283ihdkzplr2TBeT2K4wLXAlkpICAABo0aECDBg2oVKkSkydPpnv37tStW5eFCxcSFBREkyZN6N69O0lJSeet330xqsqsWbMoV67cOeWrV69Oc4rzChUqMGvWrLPb77//PocOHSIq6t8pZc6MYfzyyy/ceuuttG/fnsjISL9iMyYnU7eb/p80YxEHIQwax5WiZ/P3qFiqtNOhpQu7wshk27dvZ8eOHWe3N27cSKlSpQDP1OQjRoygdu3aFCtWjMOHD7Nt2zYqVLjwfdn58uXj+PHjZ7ebNWvGu+++e3ZNizNdXRfSqFEj4uLiGDVq1NmykydPprrvjTfeyMCBA3nttdcuelxjcouV0bPo8mF1FnGQ4gnKYwVaMaL3/ByTLMASRqY7ceIE3bp1o3z58kRERPDzzz8zePBgwLMGxYEDB86ODURERBAREXHR2SkbNmzIzz//TGRkJNOnT+fFF18kISGBiIgIKlasyIsvppzL8Xwiwpw5c/juu+8oU6YMNWrUoFu3bmkmhT59+rB8+XJ2797t3xdgTA5z9PghBkxqwZM/DWJ3SBytk67nsy7reLBdtlyB4YIcmd48s2TF6c1zO/v+TU7y9aoxvL/pPXaGKBVjg+lZYyiNo5o7HdZlyYrTmxtjTLZ1Ii6Odz7vwtSEXyAE7g2qQa9uoyiUJ9jp0DKUJQxjjPGRut0s/t9ohm1/n8OBLirFhtCtcm+a1XnQ6dAyhSUMY4zxQULCSR6a3JDVQScJd0HngIa0bv0iESVzzzIKljCMMeYipix6k89+m8yuEKVO7JW0ibiXlrd2dzqsTGcJwxhj0rD91xUMWvooPwcnERyk3Ha6LIO6z6RgeM4eq0iLJQxjjEkhKSmB92Y9x9zjX3IqAKr9U5THmg2jarnaTofmKHsOwwFZaXrzo0eP8sEHH6T5uU15bnKbiV+8QKfx1Rl3ahF/BbroUqABEx75NtcnC7CEkemST2/+008/8fXXX3PttddevCKe6c3PTCJ4ZnrzjRs3sn379gxJGGemPK9Xrx6//vor0dHRTJs2jZiYmLP71K1blw0bNrBhwwbmz5/P999/f0lxGOO0TVvnMWLGI7z191y2hSRR63gxplQfTN/272aLtSoyQ6YlDBEpJyIbk72OicjjIhIpIj94y9aJSI006j8hIltEZLOITBWRrLfgrQ9Sm968ePHirFmzhg4dOgAwd+5cwsLCiI+PJy4ujrJlywLQvXt3Zs6cybhx45gxYwZDhgyhc+fODBo0iOnTp5990js2Npb777+f6tWrU6VKFebOnQt4ZqStUaMGkZGRREREsGPHDgYMGMCuXbuIjIzkmWeeOSdWm/Lc5AYJCYnMXzGBB38YyPhT3wHwXKnX+G/XL4kof0e2nIY8o2TaGIaqbgciAUQkAM/a3LOBscDLqrpQRFoCrwMNktcVkWuAx4DyqnpKRGbgWdd70uXE9Nqa19j297bLOcR5bip8E/1r9E/zcyenNx89ejT9+vWjS5cuxMfHk5SUxLBhw9i8eTMbN248L1ab8tzkdIcObePteS8zL2AzuFzUii1MmwoduL1+9lrYKLM4NejdGNilqntFRIH83vICwP406gQCYSKSAIRfYL8s7cz05itWrGDZsmXcfffdDBs2jO7du6c6vXlSUtIlTW8+b968s7PcnpnevHbt2gwdOpSYmBg6dOjADTfc4Ndx+/bty8qVKwkODmbt2rXAv1Oeb9++nQEDBtiU5ybbGP/FQ4z4eyUEeLa7BtelX5f3CA60K4q0OJUwOgFTve8fBxaLyHA8XWS3pNxZVfd5P/8NOAUsUdUlqR1YRHoBvQBKlix5wSAudCWQkZya3vzmm2+mZs2aLFiwgGbNmjFu3Liz3V2psSnPTU508tRRnp58ByvCDhLmdlMlrhiPNXuXCmUrOR1alpfpqVREgoE2wGfeooeAJ1T1WuAJYHwqdQoBbYEyQHEgj4jcm9rxVXWMqkapalSxYlnvCUwnpzf/9ddfKVu2LI899hht2rThp59+Oq9ucjbluclpPvi8Fx0+vZUVYQfJl+Tmxeue4MOHvrVk4SMnrr1aAOtV9YB3uxvwuff9Z0Bqg95NgN2q+peqJnj3P+9KJDtwcnrz6dOnU7FiRSIjI9m2bRtdu3alSJEi1KlTh4oVK5436G1TnpucYtuv0Tw5pi2jjq9iX6BQ59gNLO+2idvr9XQ6tGwl06c3F5FpwGJVnejd3go8pKrfikhj4HVVrZaiTk1gAlAdT5fUJGCdqr57oXPZ9OZZj33/JjMlJLn5/NtxfLhnJH8Furg6QRnWcC43X1uasOAAp8PLkrLM9OYiEg7cBvROVvwgMFJEAoE4vOMPIlIcGKeqLVV1tYjMBNYDicAGYExmxm6MyT7U7WbZ6neZu+lLvgnZT1CA0CmwA/06PknePAWcDi/bytSEoaongSIpylYC1VLZdz/QMtn2S8BLGR2jMSZ7S3Ir0xcP4NWDCyEEbo4LoP0Ng7ijXju7A+oy5cq5pFT1ouMCJv3l5NUdjfMSE+L4J/YQz0+5n1V59pPXrdwR3pLeHZ8nX56CToeXI+S6hBEaGsrhw4cpUqSIJY1MpKocPnyY0NBs+YC+yQYe/bgRKwOOQ16IjAulR7XBNIpq7XRYOUquSxglSpQgJiaGv/76y+lQcp3Q0FBKlCjhdBgmh1m8cgSzNs9iVZjn9vD7Q1vzRLdXHY4qZ8p1CSMoKIgyZco4HYYx5jIdPHKAEXN78YX8CmFQ7XQo73b5yrqfMlCuSxjGmOwtKTGepavfZeKWKWwOSaD0aXi40n9pUbut06HleJYwjDHZRlx8PM9+0oRlAUcgBNq7q/FI59Fckc/GxjKDJQxjTLawY+86nl/Uk62hSVQ8FUybMnfQudlzToeVq1jCMMZkaYcO7eK/8x5gpRwiIFi5y1WDR+8bTcE8IU6HlutYwjDGZFlfrhjFh9s+4PcgpeLx/LSp+BAdG97ndFi5liUMY0yWs/ePnYxd8iRz2Q3BcH/YrTzebZQ9O+UwSxjGmCwjMSGOyQuf472/l5AoQsTxMJ5pNobIGyKdDs1gCcMYk0X8fSKWZ6Y3Yk3gSRDhwTxtaNLkGcpfU9Dp0IyXJQxjjKNOnjjIjG8/5MOD0zgR6OKW2GJ0qd6NetW7OR2aScEShjHGMbv3rOSeZb054XKRH+igNejT+V2uLhTudGgmFZYwjDGZTt1uXph0L/MCNhGMEHWsMHdX60XzW7o4HZq5AEsYxphMNWp2L2b8/T2HvGtT3BNWnad6THQ4KuOLTEsYIlIOmJ6sqCwwCPgWGA2E4llN72FVXZNK/YLAOKAioMD9qroqY6M2xqSXVRsmM3vDNBYGxECgixrHrmB4j/kUyhvmdGjGR5mWMFR1OxAJICIBwD5gNjAWeFlVF4pIS+B1oEEqhxgJLFLVjiISDFgnpzHZgDspiXHzX2LUkTkkBgiiyuvlXuDWqh3JG2KdHNmJU39bjYFdqrpXRBTI7y0vAOxPubOI5AfqAd0BVDUeiM+cUI0xl2rtxo9YsnkR05I2gQitEqpzZ83mVKt0l9OhmUvgd8IQkTxAnKomXcZ5OwFTve8fBxaLyHDABdySyv5lgb+AiSJSGYgG+qlqbCrx9QJ6AZQsWfIyQjTGXKq4hCQWr3iTF37/GIDCiW4eKdOfNvW6EBIY4HB05lJddEV0EXGJyD0iskBEDgLbgD9EZIuIvCEiN/hzQm93UhvgM2/RQ8ATqnot8AQwPpVqgUBVYJSqVgFigQGpHV9Vx6hqlKpGFStWzJ/QjDHppP/Elrzw+8cEqtL4VDleq/Eudzbqaskim/PlCmMZ8DUwENisqm4AESkMNASGichsVf3Ex3O2ANar6gHvdjegn/f9Z3gGtlOKAWJUdbV3eyZpJAxjjHPGzXuETw4t43CIi9Kn4YGbnqddvc5Oh2XSiS8Jo4mqJqQsVNW/gVnALBEJ8uOcnfm3Owo8Yxb18dwt1QjYkcq5/hSR30WknHfwvDHwsx/nNMZkoF/2rGf4gqdZH36QAm6oF1eSwZ0/plihwk6HZtLRRRNGasniUvYBEJFw4Dagd7LiB4GRIhIIxOEdfxCR4sA4VW3p3e9RYIq3S+tXoIcv5zTGZBx3UhKvT+vFwtM/cCyPcF18AIMafkjEDbWcDs1kAJ8HvUXkyVSK/wGiVXWjL8dQ1ZNAkRRlK4Fqqey7H2iZbHsjEOVrvMaYjDV+Xl+i/9zCipDDhAm0dd3B4F4vOx2WyUD+3CUV5X194d1uBawF+ojIZ6r6enoHZ4zJek7GJfDRopd5/5/lEAI3nQ7gv62XcePVRS5e2WRr/iSMIkBVVT0BICIv4Rl8rofnNldLGMbkYAmnY1m/ZRofrh3L2tBYCiW6eeDq7nRq1JuQ0PwXP4DJ9vxJGCU592G5BKCUqp4SkdPpG5YxJqvpP7UVX8lhCIX6p4rTs/FrtrBRLuNPwvgU+EFE5nq3bwemeh/kszuWjMmhFq54i0+3TGVjWBxlTkOrK++gd7fBTodlHOBzwlDV/4jIl8CtgAB9VHWd92Obk9iYHOZUXBwvT2vHAtkHYdAssTjPdZ5O4XwFnQ7NOMSfu6QEuBkooKpDRKSkiNRIbWZZY0z25U5K5OtV7/HRlk/4MfQ0lU+E0bPuBzSIsJsUczt/uqQ+ANx4Hq4bAhzH8+Be9QyIyxjjgCOxsbw0rRXLAj1jFR1d5RjQe7pN6WEA/xJGTVWtKiIbAFT1iPchOmNMDrBj91qeW/Ig20KTqHoiL3dHdKNFnV6I66JTzplcwp+EkeBdx0IBRKQYnisOY0w2djz2CE9ObcEPQbEQCp0DbuWBe9/kygK25Iw5lz8J4x08Cx5dKSJDgY7ACxkSlTEmU8xc+gHjf/2AmGCh+vHCNL6+PV2aP+50WCaL8ucuqSkiEo1n4j+Adqq6NWPCMsZkpF92r2Hk0qdYHnSU8EDlvqDaPN7nQ4IDrfvJpO2iCSONOaQAWohIC1V9K51jMsZkkPjTJ/jvtPuYzU4CApUqx/LTq8Fb3FrJJgs0F+fLFUY+75/l8NwRNc+7fTuwPCOCMsakvy+/n8KnP7/Fj8GeCRseLticu+56hYLhdu+K8Y0v05u/DCAiS/DMJXXcuz2Yf1fNM8ZkUVu2f8nnaz5iVtJmkoKFW/65jhfveJES15w3SbQxF3Q5c0nFA6XTNRpjTLpxu5Wf9/xMz/89Q6zLBSL0LdiFtu36cXWBMKfDM9mQPwnjY2CNiMzGc2tte2ByhkRljLks8aeP8/zHXVgUtBtcLm45fjVtKnekVd1eTodmsjF/7pIaKiILgbreoh6qusHX+iJSDpierKgsMAjP0qyjgVAgEXg4relGvM+BrAP2qWprX89tTG7y+dcv8dK+zyEIiia6aZuvLo/dNwqXS5wOzWRzvtwlJaqqAKq6Hlh/oX3S4l2LO9K7fwCwD89zHWOBl1V1oYi0xLOuRoM0DtMP2ArY5PvGpPBbzFreWvgCS4P341Ll1tgy9L9rMiWL2braJn34ctP1MhF5VERKJi8UkWARaSQik4Fufp63MbBLVffi6d46kwAKAPtTqyAiJfCs8jfOz3MZk+ON/KwXrZbez9Lg/YgqT1/Riff7fmHJwqQrX7qkmgP341n7ogxwFAjDk2yWAG/7uqZ3Mp2Aqd73jwOLRWS495i3pFFnBPAs/97mmyoR6QX0AihZsuSFdjUm29u4ZS5z1s1gFj8BUO9EY17r2p+8+a52ODKTE8lFepLO3VkkCCgKnFLVo5d0Qs+EhfuBCqp6QETeAb5T1VkichfQS1WbpKjTGmipqg+LSAPgaV/GMKKionTdunUX282YbOdY7ElGzxvItNNLSRAhb5Kb0fWmUq5UBUKDbGZZc+lEJFpVU53L3p+7pFDVBOCPy4ynBbBeVQ94t7vhGZsAz3MdqXU51QHaeMc4QoH8IvKJqt57mbEYk+38sT+aN758nq+C9hGmSlupT7tbOlH5+ginQzM5nF8JI5105t/uKPBcbdTHc7dUI2BHygqqOhAYCJDsCsOShclVDh6LY+mqN3j1j+lokFD+dCCP1XqHOhF1L17ZmHSQqQlDRMKB24DeyYofBEaKSCAQh3f8QUSKA+NUtWVmxmhMVnT02J88OaU1P4afJr9bqasR9G33Gtdeca3ToZlcxJ8lWh9Q1fGXczJVPQkUSVG2EjhvjgJV3Q+clyxU9Vs8VyPG5AoDJrZiges3XGFK1bhwelZ/jrpV2zkdlsmF/LnCeFNEuuB5uG4NMFVVt2RMWMaYCV88wvJ9a4kOO0nRRDeNg1vxfK/XELEH8Iwz/EkYh4H/AsF4HsCbISLvqOqHGRGYMbnV4X+OMWb+U3ya+AOEQaXTQYy5dyl5wws5HZrJ5fxJGP+o6jfe94tEZCSwGrCEYUw6SEqMZ/ayQXy2ezE/hyRybbzySOVRtKxhg9oma/B70FtE+uN5FqMAcDzdIzImF0pyK8NmdGJawg4IgY4SQZ87x3JlQVtX22Qdl3KX1Cw8U3u0BV5J33CMyX2Wr53IqPXvsjk0gRviXHS/6THa1H/A6bCMOY8/CaOQiFyrqjuBnSIyFtgALMiY0IzJ2ZKSEnjhk9uZzz5CgpXb9ToevWsyVxcq6HRoxqTKn4SRH/hWRA4BPwMFgaSMCMqYnEzdbhasGMmMbZ+yITSOqOMF6XLrSJpEVnU6NGMuyJ+E0RDYDNTEs763YlcXxvgl5uA+XplzDytC/oZQaJ50Da/2WUBgoM3/ZLI+fxZQ+sn7dpX3ZYzxw+qNn/LSulfYFyJE/VOM3g0HULNCE8TlyyoDxjjPibmkjMlVdh84zJC5LVgXcgqChAfzNOXejq9SOE+w06EZ4xdLGMZkoE8XvcGbf0wmPkSoebIAjcu2pnOzAU6HZcwl8WcuqUeAKap6JAPjMSZH2P1bNI8t6c6eICjsVu7I15z7Ow0jb4j9jmayL3/+9V4FrBWR9cAEYPHF1vE2JrdxJyXyzKSWLAn8g+AApcbREtxZsw/Na7VzOjRjLps/g94viMiLQFOgB/CeiMwAxqvqrowK0JjsYvy8/nx5YBG/BLsBuC9vTR7vcVkTPBuTpfi74p6KyJ/An3hmrS0EzBSRr1T12YwI0Jis7pddSxnz3TAWB/wJwVD96FW89cB8CuYNcTo0Y9KVP2MYj+FZTvUQnmVUn1HVBBFx4Vkl74IJQ0TKAdOTFZUFBuFZ22I0nqVXE4GHVXVNirrXAh/h6RZzA2NUdaSvsRuTEZISk5i5bDRjfxvFgUAhQJW3K75K1fLNKRAe5HR4xqQ7nxKGeCbgrwx0UNW9yT9TVbeItL7YMVR1O55p0RGRAGAfMBsYC7ysqgu9a3a/DjRIUT0ReEpV14tIPiDae1Xzsy/xG5Petu5YyNT/TWA22yBQaBhbgR4NulKlvC0QaXIunxKGtyuqSspkkezzrX6etzGwS1X3iojimXYEPDPg7k/l+H8Af3jfHxeRrcA1eKYoMSbTqCrrN83g/vX/wS1CuNtNryKtueOOIdYFZXI8f8YwVolIdVVdmw7n7QRM9b5/HFgsIsMBF3DLhSqKSGmgCp61OIzJNPGnj/PUpA6sCv4Dt0uo808lHm//Gjdda+tqm9zB37mk+ojIHiAWEDwXHxH+nFBEgoE2wEBv0UPAE6o6S0TuAsYDTdKomxfP9OqPq+qxNPbpBfQCKFmypD+hGZOmkZ/1ZHzsD2ioUCIB2hZsTe+ur9hyqSZXEV8fpRCRUqmVp9VNdYHjtAX6qmpT7/Y/QEFvt5fgWdkvfyr1goD5eJ7/eMuXc0VFRem6dev8Cc+Yc+zcvYJx34zga9d2glWpHleHV3t+QHiwPYBnciYRiVbVqNQ+8+dffbc0yof4GU9n/u2OAs+YRX08d0s1wnPH1Tm8iWQ8sNXXZGHM5UhISOSZia1ZGrIPAiHUDa9FDKZu1J1Oh2aMY/xJGLHJ3ocCrQG/BrtFJBy4DeidrPhBYKSIBAJxeLuTRKQ4ME5VWwJ1gPuATSKy0VvvOVX90p/zG+OLb1aNZO6WuXwT8hcAd7o68vSdfQkPL+pwZMY4y+cuqfMqioQA81S1WfqGlH6sS8r4Y9+R40xb/BKTTn8FwHXxwuiOy7nKVsAzuUh6dUmlFI7n4TtjsjV1u9m99zuGLBpIdHgseZPcdM7fmnvbPU7hAgWdDs+YLMOfJ7034VllDyAAKIb/4xfGZDnPftSMRfInhEON+Dw8dMswoio0cDosY7Icf64wkj/NnQgcUNXEdI7HmEyzbPX7TNowmfVhp7jxlIsGRVvxSNehdqusMWnwZ7Zav26fNSarOnU6gTemd2Vu0ibiw4QG8UX4b5c5FMhX0OnQjMnSfF5MWEQmi0jBZNuFRGRChkRlTAZZtGI490+qwWe6mVKnA3i2xKu8++C3liyM8YE/XVIRqnr0zIaqHhGRKukfkjHp72RcAsNm3MVs3QmhcHfgTTzZ/VPCQ21WWWN85U/CcIlIoTNLtIpIYT/rG5Pp1O1mwfJXGf/LdHaGKJEnwulxyxs0qlLP6dCMyXb8+YH/JvA/EZmJ526pu4ChGRKVMekgKSmB/h+1YLHrAOFBbjoQwQOdPqRkkfNmnjHG+MCf9TCWAevwTN8heNbGsOnFTZY0+5uRzPrlY34MO03N2EJ0jHqR5jVuczosY7I1f9bDmKOq1bA1KEwWtnffVl6e34O1obEQBk2TrmBoz0WEBttYhTGXy58uqR/ScT0MY9JVYkIcExY8y/gjS0kIEar9XYKnOoymUqnSTodmTI6R6ethGJPe5i7/iFlb32VDaBy4XPTOW5eHu76Py2UP4BmTnvxJGC0yLApjLsGBAz/x1fqpvHngCxJDhVrHr+Demt2oX72r06EZkyP5kzB+A7oAZVV1iIiUBK4C7Alwk+l+27+ZuxZ3JtblQoCBVz1Aq7v6UiDMxiqMySj+JIwPADeeu6SGAMfxLJdaPQPiMiZNL05uzxx2gstF/RPlaF65Da1vtasKYzKaPwmjpqpWFZENcPZJ7+AMisuY88xY/AJv7Z9NrMvF1QlK8/xRPNltktNhGZNr+JMwEkQkAO8U5yJSDM8Vh09EpBwwPVlRWWAQnqVZR+NZxS8ReFhV16RSvzkwEs/U6uNUdZgfsZts7K+/tvPK3Ef5OugPcLmocawoT7WfQfkSxZwOzZhcxZ+E8Q4wG7hSRIYCHYEXfa2sqtuBSABv4tnnPd5Y4GVVXSgiLYHXgQbJ63r3fx/P8q4xwFoRmWcPDuZ8oz5/idlHZvFHkCCqvFjiAe7s9oTTYRmTK/kzvfkUEYkGGnuL2qrqtks8b2Ngl6ruFREFzszVUADYn8r+NYCdqvorgIhMA9piDxHmWGt/msGUNR+yNOggBAq1j5bnjR4jKZD/KqdDMybXumjCEJF5KYu8fzYTEVS1zSWctxMw1fv+cWCxiAzHM936Lansfw3we7LtGKBmGvH2AnoBlCxZ8hJCM06KT3Tz7cblDNr0MrFBLq5McPN8lbeocGN9CuQLdTo8Y3I1X64wauP5YT0VWM2/CeOSeAfK2wADvUUPAU+o6iwRuQsYDzRJWS2VQ2kqZajqGGAMQFRUVKr7mKxH3W7W/jiBmRvmsDBgL7hc3J7YnD6tH6HkVaWcDs8Yg28J4yo8YwedgXuABcBUVd1yiedsAaxX1QPe7W5AP+/7z4BxqdSJAa5Ntl2C1LuuTDb16eKXGHZwDgTAdaeF26+6i+6tnyfAntY2Jsu4aMJQ1SRgEbBIRELwJI5vRWSIqr57CefszL/dUeD5wV8fz91SjYAdqdRZC9wgImXwDJZ3wpO8TDb318FtvPR5X1aFHiAQaJHUiMfuHMxVhQo7HZoxJgVfpzcPAVrh+WFfGs8dU5/7ezIRCcdztdI7WfGDwEgRCQTi8I4/iEhxPLfPtlTVRBF5BFiM57baCZdxhWOyAFWlz9hb+V/IMYJClWsShN439uH2+n2dDs0YkwZRvXA3v4hMBioCC4Fpqro5MwJLD1FRUbpu3TqnwzApTFv8NF/tXcGakJPkTXLTLKAtL3UdimfZFWOMk0QkWlWjUvvMlyuM+/DMTnsj8Fiy/9RnZqu15cuMTw4fO8a7sx9lFushBErFw5RO31EgX1GnQzPG+MCXMQxXZgRici53UiLL133A5B8/YV3IKQolunn0uiF0uPV2AgJtdhljsgt/nvQ2xm9xCUm88ukdzOZXCIEm8cV5psPHFC9yhdOhGWP8ZAnDZJhdu1fw8uKn2BB2ipvjAmh1bTfua/64LWxkTDZlCcOku4TEBIZM6cR83U5gCLTR63i2y0cUyFvA6dCMMZfBEoZJV9+vn8H7a19jU2g8EbFhNL3xWbrddqfTYRlj0oElDJMuTp1OYPj0Psx2ryYhVOgg1zP4oVmIy+6ZMCansIRhLos7KZEJC/oy+dBKjga4uPlUEE/Un0Tt8pWdDs0Yk84sYZhLFp+QyPOftGCR608IcHGXqxJd7nifslcUcjo0Y0wGsIRh/JaUGM+S/73PqG0T2B0CNWMLcF+Np6gf1d7p0IwxGcgShvHLb39sofeCu4kJEsKD3HRwXU//B2YQHhLidGjGmAxmCcP4xJ2UyMtTOrI4aQfxgULNv8tzX+P+1I+o6nRoxphMYgnDXNSsb95l1s6JbApJAJeLrsFVeeaJyU6HZYzJZJYwTJq2/fIlM9aMYXbiThJDhBrHi/DafZ9TtICtVWFMbmQJw6Rq2bp5vPDTQI4FuHABr18/gAbVOxEWHOB0aMYYh1jCMOc4fmwfM759hxFHvoQAF/WOV+Lu2h2oV62j06EZYxyWaQlDRMoB05MVlQUGAbWBct6ygsBRVY1Mpf4TQE9AgU1AD1WNy8CQc53layfTb8sbJIrgUqVfkYb06PqOLWxkjAEyMWGo6nYgEkBEAvCszT1bVUec2UdE3gT+SVlXRK4BHgPKq+opEZmBZ13vSRkeeC6QlBjPUxNvZ2nwfhCh7omy3FXvvzSoVMnp0IwxWYhTXVKNgV2quvdMgXh+jb0LaJRGnUAgTEQSgHBgf4ZHmQuMnfcKn/31KX8EC1cnKPdd3Z77uv3H6bCMMVmQUwmjEzA1RVld4ICq7ki5s6ruE5HhwG/AKWCJqi5J7cAi0gvoBVCyZMl0DTonid40k1H/e5PVoScgUKhxpASv9JjFlQXCnQ7NGJNFZXrCEJFgoA0wMMVHnTk/iZypUwhoC5QBjgKfici9qvpJyn1VdQwwBiAqKkrTL/KcQVV57/MhfHpsBidCXYS73Qyv/B+qV2pLaJDdAWWMSZsTVxgtgPWqeuBMgYgEAh2AamnUaQLsVtW/vPt/DtwCnJcwTNpmff0Cy/d8zzdBh8Dlok1iU57rNIA8eYo5HZoxJhtwImGkdiXRBNimqjFp1PkNqCUi4Xi6pBoD6zIuxJwl9nQiX62Zy+B9cyEISsVDv4iXaFz9Dlsu1Rjjs0xNGN4f+LcBvVN8dN6YhogUB8apaktVXS0iM4H1QCKwAW+3k0lbUmI8O35dzBvfvMKasBOEu93cFX47XVr146qiVzsdnjEmmxHVnNvNHxUVpevW5d4LkUEf385s9x4Aap3Kzx0VH6D5rfc7G5QxJksTkWhVjUrtM3vSOwf65n9vMGnLdH4MigMROgc05tkH3yIwwJZLNcZcOksYOUhikptXpjzI5+7VJAULlU+H8J+WH1OmRHmnQzPG5ACWMHKIH9aPZ3L0RFYG/0OJBGhX4j/0btHO6bCMMTmIJYxs7mjsaYbPuJe5rm0QDHVPF2ZE9yUEB9sKeMaY9GUJIxv7+ZclDF02kJ9C44mIDeHOSgNpW6c94rKxCmNM+rOEkQ2dOp3Aq9PuZDa7CAhR7nZF0rfrOArlDXU6NGNMDmYJI5tZ+sNEPvxxJFtDk6h8PJwm1z9C9+b3OR2WMSYXsISRTfx19C9en9mDrwL3kBQqdAy4jhf6zCIg0OZ/MsZkDksYWVxiQhyvz7yHqfE7IAgijofTu/6H1KtUxenQjDG5jCWMLGz3n78z8suuLA04BMADYTW5p/17XJHfxiqMMZnPEkYWdOL4H8z87g3GH1zM0QAXtU4U49Emg4go18Dp0IwxuZgljCzmyD/76DizKQcDXQS5hJ7hNeh59wfkCbXnKowxzrKEkUW4kxJ5/pPbmU8MBLpoGFuBFtW60aJmC6dDM8YYwBJGlvD1qgmM2PI2e4Mg3O2mReANDH54mtNhGWPMOSxhOOj3mNWM/OoFFrv+hCCodrQo/e+czc3FCzodmjHGnMcShkOmLH6fj34fxf4gz4p3/Qq2oMd9rxFgK+AZY7KoTEsYIlIOmJ6sqCwwCKgNlPOWFQSOqmpkKvULAuOAioAC96vqqoyLOGPE7FvNnB/G8uGJ1RAk1DsewdNt+lGmZA2nQzPGmAvKtIShqtuBSAARCQD2AbNVdcSZfUTkTeCfNA4xElikqh1FJBgIz9CA01lcQhKzl89i5G8vE+tyEepWht7Un1pVOpE/NMjp8Iwx5qKc6pJqDOxS1b1nCkREgLuARil3FpH8QD2gO4CqxgPxmRJpOog7dYRXZvRlNpvA5aLJyeo0rnw7TWu3dzo0Y4zxmVMJoxMwNUVZXeCAqu5IZf+ywF/ARBGpDEQD/VQ1NuWOItIL6AVQsmTJdA3aX6rKjKVjeCXmXdwiFEpy07dER+5u+rKjcRljzKXI9IUTvN1JbYDPUnzUmfOTyBmBQFVglKpWAWKBAantqKpjVDVKVaOKFSuWTlH7b9fuFXQaU5X/7nsPtwh1j1/H2KZfWbIwxmRbTlxhtADWq+qBMwUiEgh0AKqlUScGiFHV1d7tmaSRMJymqrw0qRtfazTHQ12UjoeHyvWhZb2+TodmjDGXxYmEkdqVRBNgm6rGpFZBVf8Ukd9FpJx38Lwx8HMGx+m3CV/04qs/17I5OBFRoVlcdd7oNR7P8IwxxmRvmZowRCQcuA3oneKj88Y0RKQ4ME5VW3qLHgWmeLu0fgV6ZHC4PktISGT03MGMiV0FwVA8QZlyxyKKFirhdGjGGJNuMjVhqOpJoEgq5d1TKdsPtEy2vRGIysDw/KZuN6s3jGXUhrGsDzpNqFt5sFg/ujW5m5DQ/E6HZ4wx6cqe9L5EqsqoOQ8x6vj/IAganCpOn6ZDqVA2S+U0Y4xJN5YwLkH0T9MYuepNNoWc4spEpX3hbjzY5WmCAzP9pjNjjMk0ljD89PzE9iyQHSSFCvXii/BY0/cpV6qi02EZY0yGs4Tho1XrJzAheiw/BJ8g4ng4rSLe4J569Z0OyxhjMo0ljIs4ciKOoZ/ex1fBW3EHC7VO5+Odnt8QFmrrahtjchdLGBewesNkRqwdyeaQBCJiw+hUZRitazZEXDZWYYzJfSxhpOLw8ThGzLqXObIdQqA91/FMjxnkCwt2OjRjjHGMJYwUjsTGc8eMahwOdFHxVBC3XXsf97d6wumwjDHGcZYwUsgX7KaqXEWJsGt4rMt4AgNtrQpjjAFLGOcJDArlrfuXOh2GMcZkOTZ6a4wxxieWMIwxxvjEEoYxxhifWMIwxhjjE0sYxhhjfGIJwxhjjE8sYRhjjPGJJQxjjDE+EVV1OoYMIyJ/AXsvsXpR4FA6hpMdWJtzvtzWXrA2+6uUqhZL7YMcnTAuh4isU9Vctd6qtTnny23tBWtzerIuKWOMMT6xhGGMMcYnljDSNsbpABxgbc75clt7wdqcbmwMwxhjjE/sCsMYY4xPLGEYY4zxiSWMFESkuYhsF5GdIjLA6XjSi4hcKyLLRGSriGwRkX7e8sIi8pWI7PD+WShZnYHe72G7iDRzLvpLJyIBIrJBROZ7t3N0ewFEpKCIzBSRbd6/79o5ud0i8oT33/RmEZkqIqE5sb0iMkFEDorI5mRlfrdTRKqJyCbvZ++IiPgchKray/sCAoBdQFkgGPgRKO90XOnUtquBqt73+YBfgPLA68AAb/kA4DXv+/Le9ocAZbzfS4DT7biEdj8JfArM927n6PZ62zIZ6Ol9HwwUzKntBq4BdgNh3u0ZQPec2F6gHlAV2JyszO92AmuA2oAAC4EWvsZgVxjnqgHsVNVfVTUemAa0dTimdKGqf6jqeu/748BWPP/Z2uL5AYP3z3be922Baap6WlV3AzvxfD/ZhoiUAFoB45IV59j2AohIfjw/WMYDqGq8qh4lZ7c7EAgTkUAgHNhPDmyvqi4H/k5R7Fc7ReRqIL+qrlJP9vgoWZ2LsoRxrmuA35Ntx3jLchQRKQ1UAVYDV6rqH+BJKsAV3t1ywncxAngWcCcry8ntBc/V8V/ARG9X3DgRyUMObbeq7gOGA78BfwD/qOoScmh7U+FvO6/xvk9Z7hNLGOdKrS8vR913LCJ5gVnA46p67EK7plKWbb4LEWkNHFTVaF+rpFKWbdqbTCCebotRqloFiMXTVZGWbN1ub599WzzdLsWBPCJy74WqpFKWbdrrh7TaeVntt4Rxrhjg2mTbJfBc3uYIIhKEJ1lMUdXPvcUHvJepeP886C3P7t9FHaCNiOzB07XYSEQ+Iee294wYIEZVV3u3Z+JJIDm13U2A3ar6l6omAJ8Dt5Bz25uSv+2M8b5PWe4TSxjnWgvcICJlRCQY6ATMczimdOG9E2I8sFVV30r20Tygm/d9N2BusvJOIhIiImWAG/AMlmULqjpQVUuoamk8f4/fqOq95ND2nqGqfwK/i0g5b1Fj4Gdybrt/A2qJSLj333hjPONzObW9KfnVTm+31XERqeX9vromq3NxTo/8Z7UX0BLPHUS7gOedjicd23UrnkvPn4CN3ldLoAiwFNjh/bNwsjrPe7+H7fhxJ0VWewEN+PcuqdzQ3khgnffveg5QKCe3G3gZ2AZsBj7Gc2dQjmsvMBXPOE0CniuFBy6lnUCU97vaBbyHd8YPX142NYgxxhifWJeUMcYYn1jCMMYY4xNLGMYYY3xiCcMYY4xPLGEYY4zxiSUMYy5CRIqIyEbv608R2ed9f0JEPsigcz4uIl0vss80EbkhI85vTGrstlpj/CAig4ETqjo8A88RCKzHM7tw4gX2qw/cq6oPZlQsxiRnVxjGXCIRaZBsnY3BIjJZRJaIyB4R6SAir3vXHVjknZblzFoE34lItIgsPjOtQwqNgPWqmigi14nI+mTnvEFEzsyPtQJo4k0wxmQ4SxjGpJ/r8Eyn3hb4BFimqpWAU0Arb9J4F+ioqtWACcDQVI5TB4gGUNVdwD8iEun9rAcwyfuZG8+01ZUzqD3GnMN+MzEm/SxU1QQR2YRnMa5F3vJNQGmgHFAR+Mq7yFkAnqkeUroaz3xIZ4wDeojIk8DdnLt+w0E8s7T6OiuvMZfMEoYx6ec0eH7zF5EE/XeA0I3n/5oAW1S19kWOcwoITbY9C3gJ+AaIVtXDyT4L9e5vTIazLiljMs92oJiI1AbPdPMiUiGV/bYC15/ZUNU4YDEwCpiYYt8bgS0ZE64x57KEYUwmUc+yvx2B10TkRzwzBt+Syq4L8SyzmtwUPLMNLzlTICJXAqfUu+KaMRnNbqs1JgsSkdnAs6q6w7v9NFBAVV9Mts8TwDFVHe9QmCaXsTEMY7KmAXgGv3d4k8d1eG63Te4onvUfjMkUdoVhjDHGJzaGYYwxxieWMIwxxvjEEoYxxhifWMIwxhjjE0sYxhhjfPJ/ZMu6uD4iMSIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 6c81a1a11..d6d147634 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -99,8 +99,8 @@ module swiftest_classes !******************************************************************************************************************************** !> A concrete lass for the central body in a Swiftest simulation type, abstract, public, extends(swiftest_base) :: swiftest_cb - character(len=STRMAX) :: name !! Non-unique name - integer(I4B) :: id !! External identifier (unique) + character(len=STRMAX) :: name !! Non-unique name + integer(I4B) :: id = 0 !! External identifier (unique) real(DP) :: mass = 0.0_DP !! Central body mass (units MU) real(DP) :: Gmass = 0.0_DP !! Central mass gravitational term G * mass (units GU * MU) real(DP) :: radius = 0.0_DP !! Central body radius (units DU) diff --git a/src/whm/whm_getacch.f90 b/src/whm/whm_getacch.f90 index 26a3acb19..c4ee90592 100644 --- a/src/whm/whm_getacch.f90 +++ b/src/whm/whm_getacch.f90 @@ -32,7 +32,7 @@ module subroutine whm_getacch_pl(self, system, param, t, lbeg) call whm_getacch_ah2(cb, pl) call whm_getacch_ah3(pl) - if (param%loblatecb) then + if (param%loblatecb) then cb%aoblbeg = cb%aobl call pl%accel_obl(system) cb%aoblend = cb%aobl @@ -97,13 +97,14 @@ function whm_getacch_ah0(mu, xhp, n) result(ah0) ! Result real(DP), dimension(NDIM) :: ah0 ! Internals - real(DP) :: fac, r2, ir3h + real(DP) :: fac, r2, ir3h, irh integer(I4B) :: i ah0(:) = 0.0_DP do i = 1, n r2 = dot_product(xhp(:, i), xhp(:, i)) - ir3h = 1.0_DP / (r2 * sqrt(r2)) + irh = 1.0_DP / sqrt(r2) + ir3h = irh / r2 fac = mu(i) * ir3h ah0(:) = ah0(:) - fac * xhp(:, i) end do From 0f650166d86c5b7363d3cf62a58a66f91e6ae882 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 16:23:09 -0400 Subject: [PATCH 13/23] Restructured gr pseudovelocity call to be part of the base swiftest_body class --- examples/whm_gr_test/init_cond.py | 2 +- examples/whm_gr_test/param.swifter.in | 2 +- examples/whm_gr_test/param.swiftest.in | 2 +- .../whm_gr_test/swiftest_relativity.ipynb | 30 ++-- src/gr/gr.f90 | 47 +++++++ src/modules/swiftest_classes.f90 | 14 ++ src/modules/whm_classes.f90 | 70 +++------- src/whm/whm_gr.f90 | 132 +++--------------- src/whm/whm_step.f90 | 8 +- 9 files changed, 124 insertions(+), 183 deletions(-) diff --git a/examples/whm_gr_test/init_cond.py b/examples/whm_gr_test/init_cond.py index c2580cddb..de15165c1 100755 --- a/examples/whm_gr_test/init_cond.py +++ b/examples/whm_gr_test/init_cond.py @@ -8,7 +8,7 @@ sim.param['DU2M'] = swiftest.AU2M sim.param['T0'] = 0.0 sim.param['DT'] = 0.25 * swiftest.JD2S / swiftest.YR2S -sim.param['TSTOP'] = 1000.0 +sim.param['TSTOP'] = 100.0 sim.param['ISTEP_OUT'] = 1461 sim.param['ISTEP_DUMP'] = 1461 sim.param['CHK_QMIN_COORD'] = "HELIO" diff --git a/examples/whm_gr_test/param.swifter.in b/examples/whm_gr_test/param.swifter.in index 789250f41..6addd694c 100644 --- a/examples/whm_gr_test/param.swifter.in +++ b/examples/whm_gr_test/param.swifter.in @@ -1,6 +1,6 @@ ! VERSION Swifter parameter file converted from Swiftest T0 0.0 -TSTOP 1000.0 +TSTOP 100.0 DT 0.0006844626967830253 ISTEP_OUT 1461 ISTEP_DUMP 1461 diff --git a/examples/whm_gr_test/param.swiftest.in b/examples/whm_gr_test/param.swiftest.in index ace6f3cad..c9b7462f0 100644 --- a/examples/whm_gr_test/param.swiftest.in +++ b/examples/whm_gr_test/param.swiftest.in @@ -1,6 +1,6 @@ ! VERSION Swiftest parameter input T0 0.0 -TSTOP 1000.0 +TSTOP 100.0 DT 0.0006844626967830253 ISTEP_OUT 1461 ISTEP_DUMP 1461 diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index fe0e42cc9..cd203cdd4 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -23,9 +23,9 @@ "output_type": "stream", "text": [ "Reading Swifter file param.swifter.in\n", - "Reading in time 1.000e+03\n", + "Reading in time 1.000e+02\n", "Creating Dataset\n", - "Successfully converted 1001 output frames.\n", + "Successfully converted 101 output frames.\n", "Swifter simulation data stored as xarray DataSet .ds\n" ] } @@ -46,9 +46,9 @@ "output_type": "stream", "text": [ "Reading Swiftest file param.swiftest.in\n", - "Reading in time 1.000e+03\n", + "Reading in time 1.000e+02\n", "Creating Dataset\n", - "Successfully converted 1001 output frames.\n", + "Successfully converted 101 output frames.\n", "Swiftest simulation data stored as xarray DataSet .ds\n" ] } @@ -116,16 +116,26 @@ "text": [ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", "JPL Horizons : 571.3210506300043\n", - "Swifter GR : 571.6748624042897\n", - "Swiftest GR : 571.6748624128945\n", - "Obs - Swifter : -0.3538117742853119\n", - "Obs - Swiftest : -0.35381178289026777\n", - "Swiftest - Swifter: 8.604956747149117e-09\n" + "Swifter GR : 579.6804682138315\n", + "Swiftest GR : 579.6804681921402\n" + ] + }, + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (1000,) (100,) ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swifter GR : {np.mean(dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swiftest GR : {np.mean(dvarpi_swiftest)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Obs - Swifter : {np.mean(dvarpi_obs - dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Obs - Swiftest : {np.mean(dvarpi_obs - dvarpi_swiftest)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swiftest - Swifter: {np.mean(dvarpi_swiftest - dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/numpy/ma/core.py\u001b[0m in \u001b[0;36m__sub__\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 4151\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_delegate_binop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4152\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mNotImplemented\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4153\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msubtract\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4154\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4155\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__rsub__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/numpy/ma/core.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, a, b, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseterr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdivide\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minvalid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1015\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mda\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1016\u001b[0m \u001b[0;31m# Get the mask for the result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1017\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mgetmask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgetmask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (1000,) (100,) " ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] diff --git a/src/gr/gr.f90 b/src/gr/gr.f90 index fd441c03b..8831a93d5 100644 --- a/src/gr/gr.f90 +++ b/src/gr/gr.f90 @@ -101,6 +101,29 @@ module pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) return end subroutine gr_pseudovel2vel + module pure subroutine gr_pv2vh_body(self, param) + !! author: David A. Minton + !! + !! Wrapper function that converts from pseudovelocity to heliocentric velocity for swiftest bodies + implicit none + ! Arguments + class(swiftest_body), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters + ! Internals + integer(I4B) :: i + real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion + + associate(n => self%nbody) + if (n == 0) return + allocate(vh, mold = self%vh) + do i = 1, n + call gr_pseudovel2vel(param, self%mu(i), self%xh(:, i), self%vh(:, i), vh(:, i)) + end do + call move_alloc(vh, self%vh) + end associate + return + end subroutine gr_pv2vh_body + module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) !! author: David A. Minton !! @@ -177,4 +200,28 @@ module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) return end subroutine gr_vel2pseudovel + module pure subroutine gr_vh2pv_body(self, param) + !! author: David A. Minton + !! + !! Wrapper function that converts from heliocentric velocity to pseudovelocity for Swiftest bodies + implicit none + ! Arguments + class(swiftest_body), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters + ! Internals + integer(I4B) :: i + real(DP), dimension(:,:), allocatable :: pv !! Temporary holder of pseudovelocity for in-place conversion + + associate(n => self%nbody) + if (n == 0) return + allocate(pv, mold = self%vh) + do i = 1, n + call gr_vel2pseudovel(param, self%mu(i), self%xh(:, i), self%vh(:, i), pv(:, i)) + end do + call move_alloc(pv, self%vh) + end associate + return + end subroutine gr_vh2pv_body + + end submodule s_gr \ No newline at end of file diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index d6d147634..0b5fdf4c8 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -159,6 +159,8 @@ module swiftest_classes procedure(abstract_step_body), public, deferred :: step procedure(abstract_accel), public, deferred :: accel ! These are concrete because the implementation is the same for all types of particles + procedure, public :: vh2pv => gr_vh2pv_body !! Converts from heliocentric velocity to psudeovelocity for GR calculations + procedure, public :: pv2vh => gr_pv2vh_body !! Converts from psudeovelocity to heliocentric velocity for GR calculations procedure, public :: initialize => io_read_body_in !! Read in body initial conditions from a file procedure, public :: read_frame => io_read_frame_body !! I/O routine for writing out a single frame of time-series data for the central body procedure, public :: write_frame => io_write_frame_body !! I/O routine for writing out a single frame of time-series data for the central body @@ -407,6 +409,12 @@ module pure subroutine gr_pseudovel2vel(param, mu, xh, pv, vh) real(DP), dimension(:), intent(out) :: vh !! Heliocentric velocity vector end subroutine gr_pseudovel2vel + module pure subroutine gr_pv2vh_body(self, param) + implicit none + class(swiftest_body), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters + end subroutine gr_pv2vh_body + module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) implicit none class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters @@ -416,6 +424,12 @@ module pure subroutine gr_vel2pseudovel(param, mu, xh, vh, pv) real(DP), dimension(:), intent(out) :: pv !! Pseudovelocity vector - see Saha & Tremain (1994), eq. (32) end subroutine gr_vel2pseudovel + module pure subroutine gr_vh2pv_body(self, param) + implicit none + class(swiftest_body), intent(inout) :: self !! Swiftest particle object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters + end subroutine gr_vh2pv_body + module subroutine io_dump_param(self, param_file_name) implicit none class(swiftest_parameters),intent(in) :: self !! Output collection of parameters diff --git a/src/modules/whm_classes.f90 b/src/modules/whm_classes.f90 index b0f176a0a..00d73a471 100644 --- a/src/modules/whm_classes.f90 +++ b/src/modules/whm_classes.f90 @@ -30,21 +30,19 @@ module whm_classes !! Note to developers: If you add componenets to this class, be sure to update methods and subroutines that traverse the !! component list, such as whm_setup_pl and whm_spill_pl contains - procedure, public :: h2j => whm_coord_h2j_pl !! Convert position and velcoity vectors from heliocentric to Jacobi coordinates - procedure, public :: j2h => whm_coord_j2h_pl !! Convert position and velcoity vectors from Jacobi to helliocentric coordinates - procedure, public :: vh2vj => whm_coord_vh2vj_pl !! Convert velocity vectors from heliocentric to Jacobi coordinates - procedure, public :: drift => whm_drift_pl !! Loop through massive bodies and call Danby drift routine - procedure, public :: fill => whm_fill_pl !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) - procedure, public :: accel => whm_getacch_pl !! Compute heliocentric accelerations of massive bodies - procedure, public :: accel_gr => whm_gr_getacch_pl !! Acceleration term arising from the post-Newtonian correction - procedure, public :: p4 => whm_gr_p4_pl !! Position kick due to p**4 term in the post-Newtonian correction - procedure, public :: vh2pv => whm_gr_vh2pv_pl !! Converts from heliocentric velocity to psudeovelocity for GR calculations - procedure, public :: pv2vh => whm_gr_pv2vh_pl !! Converts from psudeovelocity to heliocentric velocity for GR calculations - procedure, public :: setup => whm_setup_pl !! Constructor method - Allocates space for number of particles - procedure, public :: set_mu => whm_util_set_mu_eta_pl !! Sets the Jacobi mass value for all massive bodies. - procedure, public :: set_ir3 => whm_setup_set_ir3j !! Sets both the heliocentric and jacobi inverse radius terms (1/rj**3 and 1/rh**3) - procedure, public :: step => whm_step_pl !! Steps the body forward one stepsize - procedure, public :: spill => whm_spill_pl !!"Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) + procedure, public :: h2j => whm_coord_h2j_pl !! Convert position and velcoity vectors from heliocentric to Jacobi coordinates + procedure, public :: j2h => whm_coord_j2h_pl !! Convert position and velcoity vectors from Jacobi to helliocentric coordinates + procedure, public :: vh2vj => whm_coord_vh2vj_pl !! Convert velocity vectors from heliocentric to Jacobi coordinates + procedure, public :: drift => whm_drift_pl !! Loop through massive bodies and call Danby drift routine + procedure, public :: fill => whm_fill_pl !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) + procedure, public :: accel => whm_getacch_pl !! Compute heliocentric accelerations of massive bodies + procedure, public :: accel_gr => whm_gr_getacch_pl !! Acceleration term arising from the post-Newtonian correction + procedure, public :: gr_pos_kick => whm_gr_p4_pl !! Position kick due to p**4 term in the post-Newtonian correction + procedure, public :: setup => whm_setup_pl !! Constructor method - Allocates space for number of particles + procedure, public :: set_mu => whm_util_set_mu_eta_pl !! Sets the Jacobi mass value for all massive bodies. + procedure, public :: set_ir3 => whm_setup_set_ir3j !! Sets both the heliocentric and jacobi inverse radius terms (1/rj**3 and 1/rh**3) + procedure, public :: step => whm_step_pl !! Steps the body forward one stepsize + procedure, public :: spill => whm_spill_pl !!"Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) end type whm_pl !******************************************************************************************************************************** @@ -57,14 +55,12 @@ module whm_classes !! component list, such as whm_setup_tp and whm_spill_tp contains private - procedure, public :: drift => whm_drift_tp !! Loop through test particles and call Danby drift routine - procedure, public :: accel => whm_getacch_tp !! Compute heliocentric accelerations of test particles - procedure, public :: accel_gr => whm_gr_getacch_tp !! Acceleration term arising from the post-Newtonian correction - procedure, public :: p4 => whm_gr_p4_tp !! Position kick due to p**4 term in the post-Newtonian correction - procedure, public :: vh2pv => whm_gr_vh2pv_tp !! Converts from heliocentric velocity to psudeovelocity for GR calculations - procedure, public :: pv2vh => whm_gr_pv2vh_tp !! Converts from psudeovelocity to heliocentric velocity for GR calculations - procedure, public :: setup => whm_setup_tp !! Allocates new components of the whm class and recursively calls parent allocations - procedure, public :: step => whm_step_tp !! Steps the particle forward one stepsize + procedure, public :: drift => whm_drift_tp !! Loop through test particles and call Danby drift routine + procedure, public :: accel => whm_getacch_tp !! Compute heliocentric accelerations of test particles + procedure, public :: accel_gr => whm_gr_getacch_tp !! Acceleration term arising from the post-Newtonian correction + procedure, public :: gr_pos_kick => whm_gr_p4_tp !! Position kick due to p**4 term in the post-Newtonian correction + procedure, public :: setup => whm_setup_tp !! Allocates new components of the whm class and recursively calls parent allocations + procedure, public :: step => whm_step_tp !! Steps the particle forward one stepsize end type whm_tp !******************************************************************************************************************************** @@ -179,34 +175,6 @@ module pure subroutine whm_gr_p4_tp(self, param, dt) real(DP), intent(in) :: dt !! Step size end subroutine whm_gr_p4_tp - module pure subroutine whm_gr_pv2vh_pl(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(whm_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - end subroutine whm_gr_pv2vh_pl - - module pure subroutine whm_gr_pv2vh_tp(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(whm_tp), intent(inout) :: self !! WHM test particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - end subroutine whm_gr_pv2vh_tp - - module pure subroutine whm_gr_vh2pv_pl(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(whm_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - end subroutine whm_gr_vh2pv_pl - - module pure subroutine whm_gr_vh2pv_tp(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(whm_tp), intent(inout) :: self !! WHM test particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - end subroutine whm_gr_vh2pv_tp - !> Reads WHM massive body object in from file module subroutine whm_setup_pl(self,n) implicit none diff --git a/src/whm/whm_gr.f90 b/src/whm/whm_gr.f90 index 88018057e..3cf159504 100644 --- a/src/whm/whm_gr.f90 +++ b/src/whm/whm_gr.f90 @@ -17,20 +17,19 @@ module subroutine whm_gr_getacch_pl(self, param) !! author: David A. Minton real(DP), dimension(:, :), allocatable :: aj real(DP) :: beta, rjmag4 - associate(n => self%nbody, mu => self%muj, c2 => param%inv_c2, & - ah => self%ah, xj => self%xj, GMpl => self%Gmass, eta => self%eta) - if (n == 0) return - allocate(aj, mold = ah) - do i = 1, n - rjmag4 = (dot_product(xj(:, i), xj(:, i)))**2 - beta = - mu(i)**2 * c2 - aj(:, i) = 2 * beta * xj(:, i) / rjmag4 + associate(pl => self, npl => self%nbody, inv_c2 => param%inv_c2) + if (npl == 0) return + allocate(aj, mold = pl%ah) + do i = 1, npl + rjmag4 = (dot_product(pl%xj(:, i), pl%xj(:, i)))**2 + beta = -pl%muj(i)**2 * inv_c2 + aj(:, i) = 2 * beta * pl%xj(:, i) / rjmag4 end do suma(:) = 0.0_DP - ah(:, 1) = ah(:, 1) + aj(:, 1) - do i = 2, n - suma(:) = suma(:) + GMpl(i) * aj(:, i) / eta(i) - ah(:, i) = ah(:, i) + aj(:, i) + suma(:) + pl%ah(:, 1) = pl%ah(:, 1) + aj(:, 1) + do i = 2, npl + suma(:) = suma(:) + pl%Gmass(i) * aj(:, i) / pl%eta(i) + pl%ah(:, i) = pl%ah(:, i) + aj(:, i) + suma(:) end do end associate return @@ -51,13 +50,12 @@ module subroutine whm_gr_getacch_tp(self, param) integer(I4B) :: i real(DP) :: rjmag4, beta - associate(n => self%nbody, mu => self%mu,& - c2 => param%inv_c2, ah => self%ah, xh => self%xh, status => self%status) - if (n == 0) return - do i = 1, n - rjmag4 = (dot_product(xh(:, i), xh(:, i)))**2 - beta = - mu(i)**2 * c2 - ah(:, i) = ah(:, i) + beta * xh(:, i) / rjmag4 + associate(tp => self, ntp => self%nbody, inv_c2 => param%inv_c2) + if (ntp == 0) return + do i = 1, ntp + rjmag4 = (dot_product(tp%xh(:, i), tp%xh(:, i)))**2 + beta = - tp%mu(i)**2 * inv_c2 + tp%ah(:, i) = tp%ah(:, i) + beta * tp%xh(:, i) / rjmag4 end do end associate return @@ -113,100 +111,4 @@ module pure subroutine whm_gr_p4_tp(self, param, dt) return end subroutine whm_gr_p4_tp - module pure subroutine whm_gr_pv2vh_pl(self, param) - !! author: David A. Minton - !! - !! Wrapper function that converts from pseudovelocity to heliocentric velocity for massive bodies - !! in a WHM object - implicit none - ! Arguments - class(whm_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - ! Internals - integer(I4B) :: i - real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion - - associate(pl => self, npl => self%nbody) - if (npl == 0) return - allocate(vh, mold = pl%vh) - do i = 1, npl - call gr_pseudovel2vel(param, pl%mu(i), pl%xh(:, i), pl%vh(:, i), vh(:, i)) - end do - call move_alloc(vh, pl%vh) - end associate - return - end subroutine whm_gr_pv2vh_pl - - module pure subroutine whm_gr_pv2vh_tp(self, param) - !! author: David A. Minton - !! - !! Wrapper function that converts from pseudovelocity to heliocentric velocity for test particles bodies - !! in a WHM object - implicit none - ! Arguments - class(whm_tp), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - ! Internals - integer(I4B) :: i - real(DP), dimension(:,:), allocatable :: vh !! Temporary holder of pseudovelocity for in-place conversion - - associate(tp => self, ntp => self%nbody) - if (ntp == 0) return - allocate(vh, mold = tp%vh) - do i = 1, ntp - call gr_pseudovel2vel(param, tp%mu(i), tp%xh(:, i), tp%vh(:, i), vh(:, i)) - end do - call move_alloc(vh, tp%vh) - end associate - return - end subroutine whm_gr_pv2vh_tp - - module pure subroutine whm_gr_vh2pv_pl(self, param) - !! author: David A. Minton - !! - !! Wrapper function that converts from heliocentric velocity to pseudovelocity for massive bodies - !! in a WHM object - implicit none - ! Arguments - class(whm_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - ! Internals - integer(I4B) :: i - real(DP), dimension(:,:), allocatable :: pv !! Temporary holder of pseudovelocity for in-place conversion - - associate(pl => self, npl => self%nbody) - if (npl == 0) return - allocate(pv, mold = pl%vh) - do i = 1, npl - call gr_vel2pseudovel(param, pl%mu(i), pl%xh(:, i), pl%vh(:, i), pv(:, i)) - end do - call move_alloc(pv, pl%vh) - end associate - return - end subroutine whm_gr_vh2pv_pl - - module pure subroutine whm_gr_vh2pv_tp(self, param) - !! author: David A. Minton - !! - !! Wrapper function that converts from heliocentric velocity to pseudovelocity for teset particles - !! in a WHM object - implicit none - ! Arguments - class(whm_tp), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters - ! Internals - integer(I4B) :: i - real(DP), dimension(:,:), allocatable :: pv !! Temporary holder of pseudovelocity for in-place conversion - - associate(tp => self, ntp => self%nbody) - if (ntp == 0) return - allocate(pv, mold = tp%vh) - do i = 1, ntp - call gr_vel2pseudovel(param, tp%mu(i), tp%xh(:, i), tp%vh(:, i), pv(:, i)) - end do - call move_alloc(pv, tp%vh) - end associate - return - end subroutine whm_gr_vh2pv_tp - end submodule s_whm_gr \ No newline at end of file diff --git a/src/whm/whm_step.f90 b/src/whm/whm_step.f90 index fb84fe49e..aac704f67 100644 --- a/src/whm/whm_step.f90 +++ b/src/whm/whm_step.f90 @@ -54,9 +54,9 @@ module subroutine whm_step_pl(self, system, param, t, dt) call pl%set_beg_end(xbeg = pl%xh) call pl%kick(dth) call pl%vh2vj(cb) - if (param%lgr) call pl%p4(param, dth) + if (param%lgr) call pl%gr_pos_kick(param, dth) call pl%drift(system, param, dt) - if (param%lgr) call pl%p4(param, dth) + if (param%lgr) call pl%gr_pos_kick(param, dth) call pl%j2h(cb) call pl%accel(system, param, t + dt) call pl%kick(dth) @@ -93,9 +93,9 @@ module subroutine whm_step_tp(self, system, param, t, dt) tp%lfirst = .false. end if call tp%kick(dth) - if (param%lgr) call tp%p4(param, dth) + if (param%lgr) call tp%gr_pos_kick(param, dth) call tp%drift(system, param, dt) - if (param%lgr) call tp%p4(param, dth) + if (param%lgr) call tp%gr_pos_kick(param, dth) call tp%accel(system, param, t + dt, lbeg=.false.) call tp%kick(dth) end associate From af307f768d01ccefe3f84a05b5b7542a07ce0896 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 16:55:19 -0400 Subject: [PATCH 14/23] Streamlined pseudovelocity conversion now that the methods are attached to the swiftest_body class --- .../whm_gr_test/swiftest_relativity.ipynb | 25 +++++------------ src/io/io.f90 | 28 ++++--------------- src/modules/swiftest_classes.f90 | 4 +-- src/modules/whm_classes.f90 | 4 +-- src/whm/whm_setup.f90 | 22 ++++++--------- src/whm/whm_step.f90 | 2 +- 6 files changed, 26 insertions(+), 59 deletions(-) diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index cd203cdd4..4026960a7 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -8,7 +8,6 @@ "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", "import swiftest\n", "from astroquery.jplhorizons import Horizons" ] @@ -76,7 +75,7 @@ "outputs": [], "source": [ "obj = Horizons(id='1', id_type='majorbody',location='@sun',\n", - " epochs={'start':'2021-01-28', 'stop':'3021-02-05',\n", + " epochs={'start':'2021-01-28', 'stop':'2121-02-05',\n", " 'step':'1y'})\n", "el = obj.elements()\n", "t = (el['datetime_jd']-el['datetime_jd'][0]) / 365.25\n", @@ -115,27 +114,17 @@ "output_type": "stream", "text": [ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", - "JPL Horizons : 571.3210506300043\n", + "JPL Horizons : 573.8351991142854\n", "Swifter GR : 579.6804682138315\n", - "Swiftest GR : 579.6804681921402\n" - ] - }, - { - "ename": "ValueError", - "evalue": "operands could not be broadcast together with shapes (1000,) (100,) ", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swifter GR : {np.mean(dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swiftest GR : {np.mean(dvarpi_swiftest)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Obs - Swifter : {np.mean(dvarpi_obs - dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Obs - Swiftest : {np.mean(dvarpi_obs - dvarpi_swiftest)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Swiftest - Swifter: {np.mean(dvarpi_swiftest - dvarpi_swifter)}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.7/site-packages/numpy/ma/core.py\u001b[0m in \u001b[0;36m__sub__\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 4151\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_delegate_binop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4152\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mNotImplemented\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4153\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msubtract\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4154\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4155\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__rsub__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mother\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.7/site-packages/numpy/ma/core.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, a, b, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseterr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdivide\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minvalid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1015\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mda\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1016\u001b[0m \u001b[0;31m# Get the mask for the result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1017\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mgetmask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgetmask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (1000,) (100,) " + "Swiftest GR : 579.4895342016788\n", + "Obs - Swifter : -5.845269099546055\n", + "Obs - Swiftest : -5.654335087393189\n", + "Swiftest - Swifter: -0.19093401215286576\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] diff --git a/src/io/io.f90 b/src/io/io.f90 index dc479da5f..245c6a052 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -975,12 +975,8 @@ module subroutine io_write_discard(self, param) call util_exit(FAILURE) end select lfirst = .false. - if (param%lgr) then - select type(discards) - class is (whm_tp) - call discards%pv2vh(param) - end select - end if + if (param%lgr) call discards%pv2v(param) + write(LUN, HDRFMT) t, nsp, param%lbig_discard do i = 1, nsp write(LUN, NAMEFMT) sub, dname(i), dstatus(i) @@ -993,11 +989,8 @@ module subroutine io_write_discard(self, param) if (param%lgr) then allocate(pltemp, source = pl) - select type(pltemp) - class is (whm_pl) - call pltemp%pv2vh(param) - allocate(vh, source = pltemp%vh) - end select + call pltemp%pv2v(param) + allocate(vh, source = pltemp%vh) deallocate(pltemp) else allocate(vh, source = pl%vh) @@ -1007,7 +1000,6 @@ module subroutine io_write_discard(self, param) do i = 1, npl write(LUN, PLNAMEFMT) name(i), GMpl(i), Rpl(i) write(LUN, VECFMT) xh(1, i), xh(2, i), xh(3, i) - write(LUN, VECFMT) vh(1, i), vh(2, i), vh(3, i) end do deallocate(vh) @@ -1189,16 +1181,8 @@ module subroutine io_write_frame_system(self, iu, param) call io_write_hdr(iu, param%t, pl%nbody, tp%nbody, param%out_form, param%out_type) if (param%lgr) then - associate(vh => pl%vh, vht => tp%vh) - select type(pl) - class is (whm_pl) - call pl%pv2vh(param) - end select - select type(tp) - class is (whm_tp) - call tp%pv2vh(param) - end select - end associate + call pl%pv2v(param) + call tp%pv2v(param) end if if (param%out_form == EL) then ! Do an orbital element conversion prior to writing out the frame, as we have access to the central body here diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 0b5fdf4c8..b0a804610 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -159,8 +159,8 @@ module swiftest_classes procedure(abstract_step_body), public, deferred :: step procedure(abstract_accel), public, deferred :: accel ! These are concrete because the implementation is the same for all types of particles - procedure, public :: vh2pv => gr_vh2pv_body !! Converts from heliocentric velocity to psudeovelocity for GR calculations - procedure, public :: pv2vh => gr_pv2vh_body !! Converts from psudeovelocity to heliocentric velocity for GR calculations + procedure, public :: v2pv => gr_vh2pv_body !! Converts from velocity to psudeovelocity for GR calculations using symplectic integrators + procedure, public :: pv2v => gr_pv2vh_body !! Converts from psudeovelocity to velocity for GR calculations using symplectic integrators procedure, public :: initialize => io_read_body_in !! Read in body initial conditions from a file procedure, public :: read_frame => io_read_frame_body !! I/O routine for writing out a single frame of time-series data for the central body procedure, public :: write_frame => io_write_frame_body !! I/O routine for writing out a single frame of time-series data for the central body diff --git a/src/modules/whm_classes.f90 b/src/modules/whm_classes.f90 index 00d73a471..6107a719d 100644 --- a/src/modules/whm_classes.f90 +++ b/src/modules/whm_classes.f90 @@ -162,7 +162,7 @@ end subroutine whm_gr_getacch_tp module pure subroutine whm_gr_p4_pl(self, param, dt) use swiftest_classes, only : swiftest_parameters implicit none - class(whm_pl), intent(inout) :: self !! Swiftest particle object + class(whm_pl), intent(inout) :: self !! WHM massive body object class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters of on parameters real(DP), intent(in) :: dt !! Step size end subroutine whm_gr_p4_pl @@ -178,7 +178,7 @@ end subroutine whm_gr_p4_tp !> Reads WHM massive body object in from file module subroutine whm_setup_pl(self,n) implicit none - class(whm_pl), intent(inout) :: self !! Swiftest test particle object + class(whm_pl), intent(inout) :: self !! WHM massive body objectobject integer(I4B), intent(in) :: n !! Number of test particles to allocate end subroutine whm_setup_pl diff --git a/src/whm/whm_setup.f90 b/src/whm/whm_setup.f90 index b0b25dc55..f9a28478f 100644 --- a/src/whm/whm_setup.f90 +++ b/src/whm/whm_setup.f90 @@ -58,15 +58,14 @@ module subroutine whm_util_set_mu_eta_pl(self, cb) ! Internals integer(I4B) :: i - associate(pl => self, npl => self%nbody, GMpl => self%Gmass, muj => self%muj, & - eta => self%eta, GMcb => cb%Gmass) + associate(pl => self, npl => self%nbody) if (npl == 0) return call util_set_mu_pl(pl, cb) - eta(1) = GMcb + GMpl(1) - muj(1) = eta(1) + pl%eta(1) = cb%Gmass + pl%Gmass(1) + pl%muj(1) = pl%eta(1) do i = 2, npl - eta(i) = eta(i - 1) + GMpl(i) - muj(i) = GMcb * eta(i) / eta(i - 1) + pl%eta(i) = pl%eta(i - 1) + pl%Gmass(i) + pl%muj(i) = cb%Gmass * pl%eta(i) / pl%eta(i - 1) end do end associate @@ -81,20 +80,15 @@ module subroutine whm_setup_system(self, param) ! Arguments class(whm_nbody_system), intent(inout) :: self !! Swiftest system object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters of on parameters + call io_read_initialize_system(self, param) ! Make sure that the discard list gets allocated initially call self%tp_discards%setup(self%tp%nbody) call self%pl%set_mu(self%cb) call self%tp%set_mu(self%cb) if (param%lgr) then - select type(pl => self%pl) - class is (whm_pl) - call pl%vh2pv(param) - end select - select type(tp => self%tp) - class is (whm_tp) - call tp%vh2pv(param) - end select + call self%pl%v2pv(param) + call self%tp%v2pv(param) end if end subroutine whm_setup_system diff --git a/src/whm/whm_step.f90 b/src/whm/whm_step.f90 index aac704f67..55e7611b1 100644 --- a/src/whm/whm_step.f90 +++ b/src/whm/whm_step.f90 @@ -16,7 +16,7 @@ module subroutine whm_step_system(self, param, t, dt) real(DP), intent(in) :: t !! Current simulation time real(DP), intent(in) :: dt !! Current stepsize - associate(system => self, cb => self%cb, pl => self%pl, tp => self%tp, ntp => self%tp%nbody) + associate(system => self, cb => self%cb, pl => self%pl, tp => self%tp) call pl%set_rhill(cb) call pl%step(system, param, t, dt) call tp%step(system, param, t, dt) From c84ab03705eca6f7da88cf76a9e165c0fca1fed9 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 17:34:51 -0400 Subject: [PATCH 15/23] More maintenence on initial conditions generator and fixes to i/o problems --- .../9pl_18tp_encounters/cb.swiftest.in | 1 + .../9pl_18tp_encounters/init_cond.py | 30 ++++++-- .../9pl_18tp_encounters/param.swifter.in | 6 +- .../9pl_18tp_encounters/param.swiftest.in | 1 + .../9pl_18tp_encounters/pl.swifter.in | 56 +++++++-------- .../9pl_18tp_encounters/pl.swiftest.in | 38 +++++----- .../9pl_18tp_encounters/tp.in | 72 +++++++++---------- .../whm_gr_test/swiftest_relativity.ipynb | 8 +-- python/swiftest/swiftest/io.py | 3 + src/io/io.f90 | 16 ++++- src/modules/swiftest_classes.f90 | 1 + src/rmvs/rmvs_step.f90 | 1 - 12 files changed, 128 insertions(+), 105 deletions(-) mode change 100644 => 100755 examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in index 689d47628..0e35c1909 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in @@ -1,4 +1,5 @@ 0.0002959122081920778 +0.0002959122081920778 0.004650467260962157 4.7535806948127355e-12 -2.2473967953572827e-18 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py old mode 100644 new mode 100755 index 314e59420..5b5a95bf6 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py @@ -1,4 +1,6 @@ +#!/usr/bin/env python3 import numpy as np +import swiftest import swiftest.io as swio import astropy.constants as const import sys @@ -68,21 +70,39 @@ print(f'EXTRA_FORCE no') print(f'BIG_DISCARD no') print(f'ROTATION no') +print(f'RHILL_PRESENT no') print(f'GR no') print(f'MU2KG {MU2KG}') print(f'DU2M {DU2M}') print(f'TU2S {TU2S}') sys.stdout = sys.__stdout__ -param = swio.read_swiftest_param(swiftest_input) +sim = swiftest.Simulation(param_file=swiftest_input) +param = sim.param # Dates to fetch planet ephemerides from JPL Horizons tstart = '2021-06-15' -ds = swio.solar_system_pl(param, tstart) + +bodyid = { + "Sun": 0, + "Mercury": 1, + "Venus": 2, + "Earth": 3, + "Mars": 4, + "Jupiter": 5, + "Saturn": 6, + "Uranus": 7, + "Neptune": 8, +} + +for name, id in bodyid.items(): + sim.add(name, idval=id) + +ds = sim.ds cb = ds.sel(id=0) pl = ds.where(ds.id > 0, drop=True) npl = pl.id.size -ntp = 18 +ntp = 16 dims = ['time', 'id', 'vec'] tp = [] t = np.array([0.0]) @@ -167,8 +187,8 @@ print(f"OUT_TYPE REAL8") print(f"OUT_FORM XV") print(f"OUT_STAT UNKNOWN") -print(f"J2 {param['J2']}") -print(f"J4 {param['J4']}") +print(f"J2 {swiftest.J2Sun}") +print(f"J4 {swiftest.J4Sun}") print(f"CHK_CLOSE yes") print(f"CHK_RMIN {rmin}") print(f"CHK_RMAX {rmax}") diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in index ec31caa63..d6a50fc37 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in @@ -1,4 +1,4 @@ -! Swifter input file generated using init_cond.py +! VERSION Swifter input file generated using init_cond.py T0 0 TSTOP 365.25 DT 1.0 @@ -11,8 +11,8 @@ BIN_OUT bin.swifter.dat OUT_TYPE REAL8 OUT_FORM XV OUT_STAT UNKNOWN -J2 4.7535806948127355e-12 -J4 -2.2473967953572827e-18 +J2 2.198e-07 +J4 -4.805e-09 CHK_CLOSE yes CHK_RMIN 0.004650467260962157 CHK_RMAX 1000.0 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in index fff05bacf..34f9a5c88 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in @@ -23,6 +23,7 @@ ENC_OUT enc.swiftest.dat EXTRA_FORCE no BIG_DISCARD no ROTATION no +RHILL_PRESENT no GR no MU2KG 1.988409870698051e+30 DU2M 149597870700.0 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in index f02f6bc6f..5bed331a6 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in @@ -1,40 +1,36 @@ -10 -0 0.00029591220819207776388 +9 +0 0.00029591220819207775568 0.0 0.0 0.0 0.0 0.0 0.0 -1 4.9125474498983625e-11 0.0014751258227142052 +1 4.9125474498983625e-11 0.0014751244996981092 1.6306381826061646e-05 -0.008059842448018334 -0.4616051037329109 -0.03846017738329229 -0.02248719132054853 0.001934639213990692 -0.001904656977422976 -2 7.243452483873647e-10 0.006759134232034941 +0.3424231950105548 0.04541859803875346 -0.02769885218647143 +-0.009135456552973951 0.02914778346055028 0.003219860945895814 +2 7.243452483873647e-10 0.00675910592748785 4.0453784346544176e-05 --0.5115875215389065 0.5030818749037324 0.03642547299277956 --0.01425515725454357 -0.01452868630179309 0.0006232072038298823 -3 8.997011382166019e-10 0.010044625087011915 +-0.7187409324847692 0.008460121607685698 0.04159114061029223 +-0.000355507214371255 -0.02031492463311098 -0.0002582876464863964 +3 8.997011382166019e-10 0.010044781409779763 4.25875607065041e-05 --0.1090020607540907 -1.009893805009766 4.823302918632528e-05 -0.01682491922568941 -0.001910549762056979 3.992660742687128e-08 -4 9.549535102761465e-11 0.0072467897902424765 +0.3408913444637776 -0.9577324614296441 4.435598231277718e-05 +0.01592829229600895 0.005704842145070232 -3.222239146362505e-07 +4 9.549535102761465e-11 0.007246745952808949 2.2657408050928896e-05 --1.342897929331636 0.9778655112682739 0.05343398538723887 --0.007712315645393206 -0.01011917844182223 -2.287744801261131e-05 -5 2.825345908631355e-07 0.3552720805286442 +-1.518194954784943 0.6839686166809457 0.05157497542651887 +-0.005224888295856506 -0.01156432042916445 -0.0001141828894241638 +5 2.825345908631355e-07 0.3552712944567904 0.0004673261703049093 -3.923184193414315 -3.168419770483168 -0.0746147877972047 -0.004655552638985802 0.006232623300954468 -0.0001300429201057457 -6 8.459715183006416e-08 0.4376460836930155 +4.04554302433205 -2.997516585076586 -0.07806209765007878 +0.004406596292841761 0.006425243736188545 -0.0001252737469736559 +6 8.459715183006416e-08 0.43765252895139073 0.00038925687730393614 -6.185794462795267 -7.804174837804826 -0.110498432926239 -0.004066833203985018 0.003458637040736611 -0.0002219310939327014 -7 1.2920249163736674e-08 0.46946272948265794 +6.294914485420795 -7.709936089816689 -0.1164782091116569 +0.004015969235853927 0.003521900151979878 -0.000221006899984545 +7 1.2920249163736674e-08 0.46953353749301263 0.00016953449859497232 -14.9290976575471 12.92949673572929 -0.1454099139559955 --0.002599557960646664 0.002795888198858545 4.391864857782088e-05 -8 1.5243589003230834e-08 0.78119478483336 +14.85869768503949 13.00480689249104 -0.1442220329069338 +-0.002615247360000599 0.002782629142130045 4.407243103045647e-05 +8 1.5243589003230834e-08 0.7812837944287938 0.00016458790412449367 -29.54416169025338 -4.716921603714237 -0.5838030174427992 -0.0004792636209523189 0.00312573757291745 -7.53264045199501e-05 -9 2.1919422829042796e-12 0.05379680851617536 -7.943294877391593e-06 -14.54448346259197 -31.05223519593471 -0.8828000265625595 -0.002923077617691739 0.0006625916902153526 -0.0009142553677224461 +29.55697963607957 -4.6325049341728 -0.5858344271811813 +0.0004702098511244648 0.0031273464291932 -7.514820514613305e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in index 0920f9b2e..7aed2bd36 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in @@ -1,37 +1,33 @@ -9 +8 1 4.9125474498983625056e-11 1.6306381826061645943e-05 -0.008059842448018333591 -0.46160510373291091524 -0.038460177383292291908 -0.02248719132054852949 0.0019346392139906921279 -0.0019046569774229759606 +0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 +-0.0091354565529739517565 0.029147783460550279367 0.0032198609458958141984 2 7.243452483873647106e-10 4.0453784346544178454e-05 --0.51158752153890652004 0.5030818749037323512 0.036425472992779560355 --0.01425515725454356988 -0.014528686301793089943 0.00062320720382988232425 +-0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 +-0.00035550721437125499377 -0.02031492463311097901 -0.0002582876464863963815 3 8.997011382166018993e-10 4.25875607065040958e-05 --0.109002060754090704386 -1.0098938050097661101 4.8233029186325282966e-05 -0.016824919225689409317 -0.0019105497620569790936 3.9926607426871282392e-08 +0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 +0.015928292296008950611 0.0057048421450702319388 -3.2222391463625049515e-07 4 9.549535102761465872e-11 2.265740805092889601e-05 --1.3428979293316360977 0.97786551126827392366 0.053433985387238869258 --0.007712315645393206092 -0.0101191784418222296525 -2.2877448012611311785e-05 +-1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 +-0.0052248882958565065657 -0.011564320429164450312 -0.000114182889424163797216 5 2.8253459086313549713e-07 0.00046732617030490929307 -3.923184193414314791 -3.1684197704831680298 -0.07461478779720470689 -0.0046555526389858022113 0.006232623300954467766 -0.00013004292010574569365 +4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 +0.004406596292841760992 0.0064252437361885449665 -0.00012527374697365591187 6 8.45971518300641563e-08 0.00038925687730393611812 -6.1857944627952665684 -7.804174837804826126 -0.11049843292623899582 -0.0040668332039850179674 0.0034586370407366113193 -0.00022193109393270141328 +6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 +0.0040159692358539270963 0.003521900151979878124 -0.00022100689998454500264 7 1.2920249163736673984e-08 0.00016953449859497231466 -14.929097657547099942 12.9294967357292893695 -0.14540991395599550673 --0.0025995579606466640267 0.0027958881988585450113 4.391864857782088156e-05 +14.8586976850394894 13.004806892491039605 -0.14422203290693380584 +-0.0026152473600005990854 0.0027826291421300452348 4.4072431030456473482e-05 8 1.5243589003230834746e-08 0.000164587904124493665 -29.544161690253378794 -4.7169216037142369657 -0.58380301744279916587 -0.00047926362095231893815 0.00312573757291745008 -7.532640451995010825e-05 -9 2.1919422829042797324e-12 -7.943294877391593783e-06 -14.544483462591969669 -31.052235195934709822 -0.88280002656255951443 -0.0029230776176917390448 0.0006625916902153525834 -0.0009142553677224461557 +29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 +0.00047020985112446483607 0.0031273464291932002029 -7.514820514613305391e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in index 6ae12da23..eeccf8904 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in @@ -1,55 +1,49 @@ -18 +16 101 -0.0080829031543499848395 -0.46158204302657929174 -0.038460177383292291908 -0.025090740792557679473 0.00193463921399069207 -0.0019046569774229759036 +0.3424462557168864163 0.04544165874508511449 -0.027698852186471431547 +-0.006531907080964799092 0.029147783460550278495 0.003219860945895814102 102 -0.008036781741686682343 -0.46162816443924253873 -0.038460177383292291908 -0.01988364184853937816 0.00193463921399069207 -0.0019046569774229759036 +0.3424001343042231693 0.045395537332421811993 -0.027698852186471431547 +-0.0117390060249831038736 0.029147783460550278495 0.003219860945895814102 103 --0.51153031124843428845 0.50313908519420458276 0.036425472992779560355 --0.007907923549198175514 -0.014528686301793089508 0.0006232072038298823056 +-0.7186837221942969922 0.0085173318981578965275 0.041591140610292232083 +0.0059917264909741391188 -0.020314924633110978403 -0.00025828764648639637377 104 --0.5116447318293787516 0.5030246646132601196 0.036425472992779560355 --0.020602390959888965127 -0.014528686301793089508 0.0006232072038298823056 +-0.7187981427752414554 0.008402911317213499279 0.041591140610292232083 +-0.0067027409197166487598 -0.020314924633110978403 -0.00025828764648639637377 105 --0.10894183284815117663 -1.0098335771038264852 4.8233029186325282966e-05 -0.023719359459963285097 -0.0019105497620569790364 3.9926607426871281197e-08 +0.34095157236971712633 -0.9576722335237045636 4.435598231277717939e-05 +0.022822732530282826419 0.005704842145070231768 -3.222239146362504855e-07 106 --0.109062288660030232146 -1.009954032915705735 4.8233029186325282966e-05 -0.00993047899141553253 -0.0019105497620569790364 3.9926607426871281197e-08 +0.34083111655783809857 -0.95779268933558359134 4.435598231277717939e-05 +0.009033852061735073852 0.005704842145070231768 -3.222239146362504855e-07 107 --1.3428658869178822233 0.97789755368202779806 0.053433985387238869258 --0.0046328365471693128824 -0.01011917844182222935 -2.28774480126113111e-05 +-1.518162912371189055 0.68400065909469953684 0.051574975426518870902 +-0.0021454091976326134308 -0.011564320429164449966 -0.0001141828894241637938 108 --1.3429299717453899721 0.97783346885452004926 0.053433985387238869258 --0.0107917947436170988396 -0.01011917844182222935 -2.28774480126113111e-05 +-1.5182269971986968038 0.68393657426719178805 0.051574975426518870902 +-0.008304367394080400255 -0.011564320429164449966 -0.0001141828894241637938 109 -3.9238450924224119731 -3.1677588714750708476 -0.07461478779720470689 -0.041537769840633231855 0.0062326233009544675795 -0.00013004292010574568976 +4.0462039233401467797 -2.9968556860684887333 -0.07806209765007877943 +0.041288813494489193245 0.006425243736188544774 -0.00012527374697365590813 110 -3.9225232944062176088 -3.169080669491265212 -0.07461478779720470689 --0.03222666456266162771 0.0062326233009544675795 -0.00013004292010574568976 +4.0448821253239524154 -2.9981774840846830976 -0.07806209765007877943 +-0.03247562090880566632 0.006425243736188544774 -0.00012527374697365590813 111 -6.1863449551503970625 -7.8036243454496956318 -0.11049843292623899582 -0.026180002087518607773 0.0034586370407366112158 -0.00022193109393270140663 +6.295464977775925064 -7.7093855974615586035 -0.11647820911165690516 +0.026129138119387516903 0.0035219001519798780186 -0.00022100689998454499602 112 -6.1852439704401360743 -7.80472533015995662 -0.11049843292623899582 --0.018046335679548570347 0.0034586370407366112158 -0.00022193109393270140663 +6.2943639930656640757 -7.7104865821718195917 -0.11647820911165690516 +-0.018097199647679661216 0.0035219001519798780186 -0.00022100689998454499602 113 -14.92933741553430238 12.9297364937164918075 -0.14540991395599550673 -0.010495205578015229936 0.0027958881988585449277 4.3918648577820880246e-05 +14.858937443026691838 13.005046650478242043 -0.14422203290693380584 +0.0104795161786612953114 0.0027826291421300451516 4.4072431030456472162e-05 114 -14.928857899559897504 12.9292569777420869315 -0.14540991395599550673 --0.015694321499308556966 0.0027958881988585449277 4.3918648577820880246e-05 +14.858457927052286962 13.004567134503837167 -0.14422203290693380584 +-0.01571001089866249159 0.0027826291421300451516 4.4072431030456472162e-05 115 -29.544394452699595632 -4.7166888412680219034 -0.58380301744279916587 -0.014914899434230450767 0.0031257375729174499863 -7.532640451995010599e-05 +29.557212398525788188 -4.6322721717265853414 -0.5858344271811812831 +0.01490584566440259634 0.0031273464291932001093 -7.514820514613305166e-05 116 -29.543928927807161955 -4.717154366160452028 -0.58380301744279916587 --0.013956372192325811402 0.0031257375729174499863 -7.532640451995010599e-05 -117 -14.544494696107316045 -31.052223962419365222 -0.88280002656255951443 -0.0037110399802695879026 0.00066259169021535256356 -0.0009142553677224461283 -118 -14.544472229076623293 -31.052246429450054421 -0.88280002656255951443 -0.002135115255113890012 0.00066259169021535256356 -0.0009142553677224461283 +29.556746873633354511 -4.632737696619015466 -0.5858344271811812831 +-0.013965425962153665829 0.0031273464291932001093 -7.514820514613305166e-05 diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index 4026960a7..90f48b315 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -116,15 +116,15 @@ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", "JPL Horizons : 573.8351991142854\n", "Swifter GR : 579.6804682138315\n", - "Swiftest GR : 579.4895342016788\n", + "Swiftest GR : 579.6804681921402\n", "Obs - Swifter : -5.845269099546055\n", - "Obs - Swiftest : -5.654335087393189\n", - "Swiftest - Swifter: -0.19093401215286576\n" + "Obs - Swiftest : -5.845269077854606\n", + "Swiftest - Swifter: -2.169144863728434e-08\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEGCAYAAABPdROvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABCrElEQVR4nO3dd3iURdfA4d/ZFFIooYROCKFDgACRItKLUkRBRUFfxQbYy2fBhr5YXlRQbKCIAooiIlJERRClCdJ7M3RC6BBaCCTZ8/2xC8YQMEvKppz7uriyO087E5I9eWbmmRFVxRhjjLlSDm8HYIwxJm+zRGKMMSZTLJEYY4zJFEskxhhjMsUSiTHGmEzx9XYA3lCqVCkNDw/3dhjGGJOnrFix4rCqhqYtL5CJJDw8nOXLl3s7DGOMyVNEZFd65da0ZYwxJlMskRhjjMkUSyTGGGMypUD2kaQnKSmJ2NhYEhMTvR1KgRQQEEDFihXx8/PzdijGGA9ZInGLjY2lSJEihIeHIyLeDqdAUVWOHDlCbGwsVapU8XY4xhgPWdOWW2JiIiVLlrQk4gUiQsmSJe1u0Jg8yhJJKpZEvMe+98bkXZZIjDGmADhxfA+vf9ONkyf2Zvm5LZHkIoULF2bnzp0EBgYSFRVFnTp1GDBgAE6nk507dxIZGXnZ41955RWGDh36j7Lw8HAOHz7sURxdunQhPj7e0/CNMbnU2g0TuWVyZ75L3MmUBZ9l+fmtsz0Xqlq1KqtXryY5OZl27doxdepUGjVqlO3XVVVUlZ9++inbr2WMyX7OlGTG/tSPD44spaRTiTzei+tvGZjl17E7klzM19eXq6++mq1bt2bJ+d555x0iIyOJjIxk+PDhAOzcuZPatWvz4IMP0qhRI/bs2XPhLubjjz8mKiqKqKgoqlSpQtu2bQGYMGEC9erVIzIykmefffbC+QsXLswLL7xAgwYNaNasGQcOHABg0qRJREZG0qBBA1q1apUldTHGXN6ePYu598tmvHt0GXUTAjm3/yXeuOtpigf7Z/m17I4kHf/9YQMb405k6TnrlC/Ky9fX9eiYhIQE5syZw+DBgzN8zLvvvsv48eMvvI+LiwNgxYoVjBkzhiVLlqCqNG3alNatW1O8eHG2bNnCmDFjGDFixD/ONWDAAAYMGEBSUhLt2rXjySefJC4ujmeffZYVK1ZQvHhxOnXqxNSpU7nxxhs5ffo0zZo14/XXX+eZZ57h008/5cUXX2Tw4MH88ssvVKhQwZrMjMlm6nQyafYTDI2bgw9wzYlGzDt8G9/2b0GlEkHZck27I8mFtm3bRlRUFC1atKBr16507tw5w8c+8cQTrF69+sK/8uXLA7Bw4UJ69OhBcHAwhQsXpmfPnixYsACAypUr06xZs0ue87HHHqNdu3Zcf/31LFu2jDZt2hAaGoqvry+333478+fPB8Df359u3boB0LhxY3bu3AlAixYt6Nu3L59++ikpKSlX8i0xxmTQpF+f5NX9vxHlCKJvuSH8HHcrH/ZpTGSFYtl2TbsjSYendw5Z7XwfSVZS1UtuCw4OvuS2sWPHsmvXLj788MN/PY+fn9+FYbw+Pj4kJycD8PHHH7NkyRJ+/PFHoqKiWL16NSVLlrySahhjLiP+2A7e3/srTSSAj/+zmA7DF9AwzI92tcpk63XtjqSAaNWqFVOnTiUhIYHTp08zZcoUWrZsedljVqxYwdChQxk/fjwOh+tHpWnTpsybN4/Dhw+TkpLChAkTaN269WXPs23bNpo2bcrgwYMpVaoUe/bsybJ6GWP+9v4vD3BK4LmWb/DnjmNsP3SaO5pWzvbr2h1JLpGcnEyhQoUuu8+WLVuoWLHihffvvvsut9xyS4bO36hRI/r27UuTJk0AuO+++2jYsOGF5qf0fPjhhxw9evRCJ3t0dDSjR4/mf//7H23btkVV6dKlCzfccMNlr/30008TExODqtK+fXsaNGiQoZiNMRm3YfP3fJcYyx3BValWtRPvfLWCkCA/utYvl+3Xlss1VeRX0dHRmnZhq02bNlG7dm0vRQRr1qzh/vvvZ+nSpV6Lwdu8/X9gTF7lTEnmP19cxV5N4oebf+EMJbl6yG/c3SKcF7rWybLriMgKVY1OW25NW7nAxx9/TO/evXnttde8HYoxJo9Rp5PhU25hrSOZJ8O7U6RoBb5Ztodkp9InB5q1wJq2coXzw2yNMSatmK0zmbpqJEX9i1I8IJQiQRF0aHI3foWCSUk+x6uTujH53D56FarA9W1eIznFyYSlu2lZvRRVSl16IE1WyrFEIiI1gYmpiiKAQUBzoKa7LASIV9WodI4PAUYDkYAC96jq4lTbnwLeBkJV1bM5QYwxJhfatWsB9y14ihMCyQl/T2xaJGYkVzvKcM5xlt/1BPcXqc0jN36DOByMnreNfccTc3T0aY4lElXdAkQBiIgPsBeYoqrDz+8jIsOA45c4xXvATFW9WUT8gaBUx1UCOgK7syV4Y4zJYYcPbaL/nAdxAg1OPciiuNJElz1Ow9LbWX9sDgsCD5CgDu4OaMyjPccC8MXinQz5eTNd6pWlU53sHfKbmreattoD21R11/kCcT2A0Atol3ZnESkKtAL6AqjqOeBcql3eBZ4BpmVfyMYYkzNOndzHAzNu46goobE92OiowRs316Jnwwo4HEKK8zVmrtnCZ78t5v1Dpdmlq6hXoRiv/biJDrXL8N5tDXE4cm5pBm8lktuACWnKWgIHVDUmnf0jgEPAGBFpAKwAHlPV0yLSHdirqmsut6aFiPQD+gGEhYVlQRWMMSZ7DP/pPrZKCpVj21CkfDe+uDWKkoX/fjzAxyF0bViLDvWqM+L3bYyYu5Vpq+NoXSOUj25viJ9Pzo6jyvFRW+5mqe7ApDSbenNxcjnPF2gEjFTVhsBpYKCIBAEv4OpruSxVHaWq0aoaHRoaesXxZ6fXX3+dunXrUr9+faKioliyZEmGjhs0aBC//vorAAsWLKBu3bpERUWxePHiLJnJ98CBA/Tp04eIiAgaN25M8+bNmTJlCgBz586lWLFiNGzYkFq1avHUU09l+nrGFGSnTu7jh4Sd1D1ZmFZNH2Xs3U3+kURSK+TrwxMda/Djoy155rqafPKfxhTy9cnhiL0z/LczsFJVD5wvEBFfoCf/7IxPLRaIVdXzn6zf4UosVYEqwBoR2QlUBFaKSNlsij3bLF68mBkzZrBy5UrWrl3Lr7/+SqVKlTJ07ODBg+nQoQMAX331FU899RSrV69my5YtHieS89OanKeq3HjjjbRq1Yrt27ezYsUKvvnmG2JjYy/s07JlS1atWsWqVauYMWMGf/zxh0fXNMb87ZOfXiDB4aBxuTt5smMNfDLQRFWjTBEebFONAL+cTyLgnUSS3p1HB2Czqsamsz+quh/Y4x75Ba4+lo2quk5VS6tquKqG40o4jdz75yn79u2jVKlSF55uL1WqFOXLl2fp0qX07NkTgGnTphEYGMi5c+dITEwkIiICgL59+/Ldd98xevRovv32WwYPHkzv3r0ZNGgQEydOJCoqiokTJ3L69GnuuecerrrqKho2bMi0aa4upbFjx3LLLbdw/fXX06lTp3/E9dtvv+Hv7/+P4cmVK1fmkUceuagO5xfk2rs361dgM6YgOHD8NLNPLKX6WeGRHnnnkYAc7SNxN0V1BPqn2XRRn4mIlAdGq2oXd9EjwFfuprHtwN3ZFujPA2H/uqw9Z9l60HnIJTd36tSJwYMHU6NGDTp06MCtt95K69atadSoEatWrQJczVaRkZEsW7aM5ORkmjZt+o9z3HfffSxcuJBu3bpx8803M3bsWJYvX35hwsXnn3+edu3a8fnnnxMfH0+TJk0u3MksXryYtWvXUqJEiX+cc8OGDRleVOvYsWPExMTYmiPGXAFV5e2Jb7C3kPBs6HX45nA/R2bkaCJR1QTgomlfVbVvOmVxQJdU71cDFz2an+aY8MzG6C2FCxdmxYoVLFiwgN9//51bb72VIUOG0LdvX6pVq8amTZtYunQpTz75JPPnzyclJeVfJ11Ma9asWUyfPv3CcryJiYns3u0aMd2xY8eLkkh6HnroIRYuXIi/vz/Lli0DXAmufv36bNmyhYEDB1K2bJ5rWTTG66au3kts0kyK+zrp1f4lb4fjEXuyPT2XuXPITj4+PrRp04Y2bdpQr149xo0bR9++fWnZsiU///wzfn5+dOjQgb59+5KSknLR+uz/RlWZPHkyNWvW/Ef5kiVLLjmVfN26dZk8efKF9x999BGHDx8mOvrvnN6yZUtmzJjBX3/9xTXXXEOPHj2IioryKDZjCrLDp84y8qdp7K9wlvuK1sW/UBFvh+SRvHPvlM9t2bKFmJi/Rz6vXr2aypVd8+S0atWK4cOH07x5c0JDQzly5AibN2+mbt3LP7lapEgRTp48eeH9tddeywcffHBhTZHzTWaX065dOxITExk5cuSFsoSEhHT3rVGjBs899xxvvvnmv57XGPO3V6ZvoGyRr3EAvZo/5+1wPGZ3JLnEqVOneOSRR4iPj8fX15dq1aoxatQowLUGyIEDBy70PdSvX5/SpUtzuedmANq2bcuQIUOIioriueee46WXXuLxxx+nfv36qCrh4eHMmDHjsucQEaZOncoTTzzBW2+9RWhoKMHBwZdMFgMGDGDo0KHs2LGDKlWqXMF3wpi86/DhzSxY8znrDq1l/Zn9OIDGhSsTGtiYkmVvpHPDyIv6PmZvPEDcjlHEVDzBf4KqUrZcQ+8Enwk2jbybTWHuffZ/YPKyhFMH6fFte+J8oIhTqesI5ExyCpsc5zjnEIqlOKl5vBFXN36F6xtWoHAhX5KSlV7vfcHpMu9QVnz5us/CXN2sdalp5O2OxBhjssCIn/sR5wMjat9Pi8YP0nfcShbGHKJeWR96VF/Pr/u/YmmJ1Rzb2JMpczuyK7EBp5xFia78AUdFeKvNu7k6iVyOJRJjjMmkTVumMf70Vm4OqEDLJo+ydMdR5v91iP/rWIOH21VD5Dr6pjzO1N8H8s6enzle+RfgF8qnONns4+Dl8p2IqHLRNIN5hiUSY4zJhJTkcwxe9AohCo93/hSAD36LoVRhf+5rGXGhL9Ph40vPDkNpH/8wKzZ+y44jm9hxcg+lA0pwU3vPRmDmNpZIjDEmEyb++gTrHcm8FX4zxYqFsWr3MRbEHGZg51oE+l88ZUmxkHDaXf2MFyLNPjb81xhjrtDpU/v5aN88mhPIdS1dc8d+8NtWQoL8uKNZzixzmxtYIjHGmCv07dwXOOEQHr3qacThYP3e4/y2+SD3tqhC4UIFp8HHEkkukpumkY+Pj2fEiBGX3G5Ty5uCLvHMMcYdXEJzAomscwsA782JoUiAL3e1CPducDnMEkkukVumkT/vconEppY3BqbOG8QRH+H++q45aBfEHGL2xgP0bxVB0QA/L0eXsyyR5BLenEZ+w4YNNGnShKioKOrXr09MTAwDBw5k27ZtREVF8fTTT/8jVpta3hQEKU5l5vp9LNp6mKQU5z+2JSUlMCZuLlHqR3SDuzmX7OTl6RuoXDKI+1pGeCli7yk4jXgeeHPpm2w+ujlLz1mrRC2ebfLsJbd7cxr5jz/+mMcee4zbb7+dc+fOkZKSwpAhQ1i/fj2rV6++KFabWt7kd4u2Hea16avwOf0ThxOrcNq3Jm1rlaZF1VI0DAth/frXiPOBF2r9B3E4+Gz+NrYfOs2Yu6/y2uJS3mSJJJfw5jTyzZs35/XXXyc2NpaePXtSvXp1j85rU8ub/MLpVJ7/8hPijn3NiWJHOF7CgY8qzc+FsG3HDWzeEk/pkPnEFD1KRIoPZ4NvY/eRBN6fE0PHOmVoW7O0t6vgFZZI0nG5O4fs5K1p5GvXrk3Tpk358ccfufbaaxk9evSFZrP02NTyJr+a/MdsfnV+iDMEWvsUp0uVLqzc9yeTdTtnyn8BwBGn0jCpKPsO38z941fiEPDzcTCoWx3vBu9FOZZI3Mvkpl6TPQIYBDQHzn+yhQDxqhqVzvEhwGggElDgHlVdLCJvA9cD54BtwN2qGp8tlchGW7ZsweFwXLgbSDuN/J133smdd955YRr5/fv3X/E08h988AEiwqpVq2jYsCHbt28nIiKCRx99lO3bt7N27VoaNGjwj2NTa9euHc8//zwjR47kgQceADI2tfyECWlXWDYm90hxKjPXvkZKMExt9ymVw5oDriVd+x3dxpQ/XicksAQdmzxBkaIVSEpxMv+vQ/ywJo6rq5WiUokg71bAi3Kss11Vt6hqlDtJNAYSgCmqemuq8snA95c4xXvATFWtBTQANrnLZwORqlof+AvIe5P545pG/q677qJOnTrUr1+fjRs38sorrwDpTyNfv379DE0jv3Hjxgud7S+99BJJSUnUr1+fyMhIXnrJtQrbxIkTiYyMJCoqis2bN3PnnXdSsmRJWrRoQWRk5EWd7eenlp83bx5VqlShSZMm3HXXXZedWn7+/Pns2LEjk98lY7LPdwtnszL4KB2l7IUkcl7xElW55/rP6dlhKEWKVgBcdyHta5dh+G0N6RWdsRGW+ZVXppEXkU7Ay6raIlWZALuBdqoak2b/osAaIEIvE7CI9ABuVtXbL3d9m0Y+d7L/A+MtKU6l38jWrAw+yoyOY6lQ4bKrehdYl5pG3lvDf28D0rZztAQOpE0ibhHAIWCMiKwSkdEikt7asPcAP6d3QRHpJyLLRWT5oUOHMhO7MSaf+W7BrAt3I5ZEPJfjiURE/IHuwKQ0m3pzcXI5zxdoBIxU1YbAaWBgmvO+ACQDX6V3AlUdparRqhodGhqaiRoYY/KTFKcya/3rADzWYYiXo8mbvHFH0hlYqaoHzheIiC/Qk392xqcWC8Sq6vk5Q77DlVjOH38X0A24/XJNX/+mIK4WmVvY9954y8S501gZfJROdjdyxbyRSNK78+gAbFbV2HT2R1X3A3vcI78A2gMbAUTkOuBZoLuqpj90KAMCAgI4cuSIfaB5gapy5MgRAgICvB2KKWBSnMpPW17DX5Unrxvu7XDyrBx9jkREgnCNpuufZtNFfSYiUh4Yrapd3EWPAF+5m8a2A3e7yz8ECgGz3aOY/lTVAXioYsWKxMbGYv0n3hEQEEDFihW9HYYpYMb8+CZrgs5yu18DypSJ9HY4eZZXRm15W3qjtowxeVdyUiJ/rBhBpTJRhIe1wuHz738jJ549Tc8vmpIsMP32RQQEFs2BSPO2S43asifbjTF53rtTb+WLhO2wBYo6lfqOwrQs05j2DftTpkx91Olk954/+GvPAkoUqUB4heZ8PvsN9vgLj4T0tCSSSZZIjDF52sz5/+WLhO3c5F+OBqENWHVwDcvP7GPhgfn8b+Z8qqc4OCApnHCkeoB3tetL3URf7u06yCtx5yeWSIwxedbWbbMYtG0SUeLPCz2ncCBBGDFmGTEHT1G50DrCis7nTFAc9R0luLpSIxpVacmWuO38sn4JZ/QQPaOfwce34M3Wm9UskRhj8qRTJ/fxxLz/IwgY1uULthxO5u6xy0hMSuHr+5pSqURbth66h8XbjjB20U7mxgrdTpdj2pogigc1ZPitDWletaS3q5EvWCIxxuRJX855ip0+8HmDJzmYXIlenyymeJA/X93XlBpligBQqUQQbWuW5j/NKvPGT5uYtCKWtjVDGXpLA0oWLuTlGuQflkiMMXlOQsJhvj62htY+Rahd+066vb+AYoF+fP/g1ZQpevHzSJVKBDHyjsbExZ+hbNEAHI7LT3hqPGOJxBiT50yZN4h4h3Bv1EO8PG0Du48mMOH+ZukmkdTKhwTmUIQFi63ZbozJU5KSEhi3bz4N1Z/dzrZMXhnLw+2q0zTC+ju8xRKJMSbXyMgD0jMXvsE+H6Fz2Z68MGU90ZWL82i7ajkQnbkUa9oyxuQKI+du491f/6JRWAhXVy1F6xqhNKgU8o99nCnJfLZjOuFOeH5uJOVD/Bh+WxS+PvY3sTdZIjHGeN3uIwm8++tf1ChTmJOJybz761+8M/svrgovzsPtqtOqeik27jvBlDkD2eaj1D3YgHuuqc6THWsQXMg+xrzN/geMMV6lqrzywwaqBaykVZkV1CpVi8odW7PycDijFsZy1+dLKRrgS0XHHPaHLaD2OV+eue1tGoWX83boxs0SiTHGq2ZvPMD2HbNJrvw1X55xwJ4Y2PMDxZ3KvXWvIrDEY6zZtppFKT9S3ung015TKRZiSSQ3sURijPGaM+dS+HDGFCTsK/wRfmw7kqSkM2zY9Ts/7ZnDe8eWU+LIHQSoICKMaD+SYiHh3g7bpGGJxBjjNaNnzyax5Eecc8DYlkMJC7sGgKpVO9IdWL3uKz5cOZy1zjN80njghe0md/E4kYhIMJCoqikeHleTfy6lGwEMApoD51c+DAHiVTUqneNDgNFAJKDAPaq6WERKuM8bDuwEeqnqMU9iM8bkvHNJySzc8xzHCsFnTQZRvdp1F+0TVe92Rte7nXNnT+JfqIgXojQZ8a9j5kTEISJ9RORHETkIbAb2icgGEXlbRKpn5EKqukVVo9xJojGQAExR1VtTlU8Gvr/EKd4DZqpqLaABsMldPhCYo6rVgTnu98aYXG709GfZGJhMn+Cm1K9762X3tSSSu2Vk8PXvQFXgOaCsqlZS1dJAS+BPYIiI3OHhddsD21R11/kCca2T24uL13NHRIoCrYDPAFT1nKrGuzffAIxzvx4H3OhhLMaYHHY8ficTjs+k2lnhoRtHeDsck0kZadrqoKpJaQtV9SiuO4jJIuLn4XUvWqMdV2I6oKox6ewfARwCxohIA2AF8JiqngbKqOo+d0z7RKR0ehcUkX5AP4CwsDAPwzXGZKX//XAPpxzCLaUfx9/fZuHN6/71jiS9JHIl+5wnIv5Ad2BSmk29SeduxM0XaASMVNWGwGk8bMJS1VGqGq2q0aGhoZ4caozJQvOXvMuPzkPUjy/D7R1u93Y4JgtkuLNdRJ5Mp/g4sEJVV3twzc7ASlU9kOrcvkBPXH0n6YkFYlV1ifv9d/ydSA6ISDn33Ug54KAHsRhjcsjx47sZ/vP9fHc2jornlFKlB9maIPmEJxPURAMDgAruf/2ANsCnIvKMB+dJ786jA7BZVWPTO0BV9wN73CO/wNXHstH9ejpwl/v1XcA0D2IxxmTSjp1z2fLXjMvuM2vBa9wwuQvfJ+6lq1Zk1/bn6dOifg5FaLKbJ8N/SwKNVPUUgIi8jOvOoBWuPou3/u0EIhIEdAT6p9l0UZ+JiJQHRqtqF3fRI8BX7qax7cDd7vIhwLcici+wG7jFgzoZYzJhycpRPLLmfc44hGsWv0b/xo8SFdnnwvbjx3fzxow7+Sn5CHXElzejXqL/9CLUrVyYRmEh3gvcZCnJyLTNACKyCWigqufc7wsBq1W1toiscvdd5AnR0dG6fPlyb4dhTJ7226K3ePqvLwhzOri2ZH2+PrqaYw4hIkWo6BtMGf9izEuI5agD+oU04P6un/HYtxuZvfEAPz12DdVK25DevEZEVqhqdNpyT+5Ivgb+FJHzTUfXAxPcDyhuvPRhxpj85sufnmfYwenUSPHl0WZj8QmoRLEDsWz660326TYOJiewNuUkZcSH95sOom7tm5i5fh8/rtvH09fWtCSSz2T4jgRARBoD1wACLFTVPPlnvd2RGHPlduz9i96zelDurA9/7X6W086QC9scAk4Ffx8H10aW5bq6ZSkXEkDRAF9uG7WEMkULMfWhFvjZ+iF5UqbvSNwPDNYGiqnqYBEJE5Emqro0KwM1xuRuH/z4BAn+wr31XiSsWyeOnD6Hn8NBpRKBlA8JZPuh00xYupvvV8byw5q4C8f5OoRx91xlSSQf8qRpawTgBNoBg4GTuB5IvCob4jLG5EIL1q9god9OmiUVo1uLXunuU7NsEV7pXpeBnWux7dApDpxIZP/xs5QPCaBu+WI5HLHJCZ4kkqaq2khEVgGo6jH3CCpjTAGQ4lTGz3uWs8HCo61f+df9A/x8qFu+mCWPAsCTe8wkEfHBNfMuIhKK6w7FGFMAfPH7b6wI2k8bLUFkjU7eDsfkIp4kkveBKUAZEXkdWAi8kS1RGWNylQMnEpm34VWSBZ5o95q3wzG5TIabtlT1KxFZgeupcoAbVXXT5Y4xxuQNCeeSCfTzwTWm5mJDJn3FmqKH6exbhvDKrXI4OpPb/WsiucQcWwCdRaSzqr6TxTEZY3LI8TNJfDxvG58v3EHDsBA+7NOIUmnmv/p53T72JY7AP0h5stP7XorU5GYZadoq4v4XDTzA33NtDQDqZF9oxpjs9MW8P+ny9neMnBvDNdVKsWp3PN3eX8jK3X8vMHo8IYkvZw5lQ+Fz3FcymtDSdb0YscmtPJkiZRZwk6qedL8vAkxS1YvXx8zl7IFEU1AtWTmKOTHTWHJ6D9t9XL/7vqoUd0LrQpVZsPdedh0PoEW1UgT5+xB37ARnCz2C+gjT+iykUICNwCrIsmKKlDDgXKr353Ctk26MyQPWbZjEfes+INCp1EguROP4slxTrRynkuLZc+YAk5N2EVpqELeU7MCWk+04k7yHUN8f+dNfGF79Dksi5pI8SSRfAktFZAquIcA9+HuJW2NMLqZOJ8OXvUkJVT7r9APXfbSJu64O575uf7dOr9swicFLX+MHnzlQbM6F8mYE0q7Z094I2+QRnozael1Efsa1JC7A3aq6KnvCMsZkpcUrP2apnGVgmZZ8uyYRBe5uEf6PferVvYUJNa7nh3kvEZ94lJJBZShRuBzR9e5AHDatibm0jIzaEnV3pKjqSmDl5fYxxuQuzpRkhq8bRQWFa69+nTbvLKNrvXJULB500b6+fgH06PC2F6I0eVlG/sz4XUQeEZGw1IUi4i8i7URkHH+vUGiMyWVm/fEGmxwpPFSlO9+vOcaps8nc3zLC22GZfCQjTVvXAffgWnukChAPBOJKQrOAdzOyZrt7mdyJqYoigEFAc+D8ErohQLyqRqVz/E5cE0WmAMnnRw6ISBTwMRAAJAMP2ozExrgkJSXw4dZJVBMH7Zu/SPt3F9E8oiT1KlrHuck6/5pIVDUR18y/I0TEDygFnFHVeE8upKpbgCgA95xde4Epqjr8/D4iMgw4fpnTtFXVw2nK3gL+q6o/i0gX9/s2nsRmTH71zewn2OUDH9Xqy4Tl+9l3PJG3bra10k3W8qgHTVWTVHWfp0kkHe2Bbaq663yBe72TXqRZuz0jYQFF3a+LAXGX2deYAuPI4b8YceAPWhBE/cgH+eC3GFpWL0XL6qHeDs3kM54M/81Kt3FxwmgJHFDVmEsco8AsEVHgE1Ud5S5/HPhFRIbiSoxXp3ewiPQD+gGEhYWlt4sx+coHsx8mUeDZ1m8ycv52jp9JYmDnWt4Oy+RDOT6mz72GSXdgUppNvbn83UgLVW0EdAYeEpHzM8c9ADyhqpWAJ4DP0jtYVUeparSqRoeG2l9kJm86fiaJT+Zt4+DJxMvut2Hz93x/No7bg6vhH9KUMX/spEfDCrY2iMkWniy1e6+qpvsh7aHOwEpVPZDq3L5AT6DxpQ5S1Tj314PuhyKbAPNxjRh7zL3bJGB0FsRoTK6T4lSe/Go2SSeH8tvGeOILneOoQNeA8gxo8yZlyzUE4MCBtbyx+DVKKAy4biSDft4CwP91qnm50xtzxTxp2homIrfjGhm1FJigqhuu4Jrp3Xl0ADaramx6B4hIMOBQ1ZPu151wLfcLrj6R1sBcXMsAX6ppzJg8bdisLZw98yrrip8kPEkolRBEuL8/0ySOH375D10LlWXH2aOsliRwwDOhXXn8+1h+3XSQ/q0jqBAS6O0qmHzKk0RyBHgN8Mc1+upbEXlfVT/J6AlEJAjoCPRPs+miPhMRKQ+MVtUuQBlginutBF/ga1Wd6d71fuA9911NIu5+EGPyk5/W7WPR8g/ZVukU9xepzYDuE/ngtxhGzN1GGd8YIkK/YTr7qZwktHdWJcXRmUELKlKk0FGevramPTdispUns/+udPdRnH8fCCxR1Tw3ltBm/zV5yY7Dp7nlg2kUC3udwuLDt30WXJhA8djpc6yOjWfNnng2xB7m2Bk4mZjMmaQUutUvR/9WVSkW5OflGpj8Iitm/z1/omdxPUtSDNcDgsaYbPTx3G3UKTmC1T7CO9HP/2MW3uLB/rStWZq2NUsDNbwXpCnQrmTU1mRgK1ARW7PdmGx1+NRZNm8ez6pix/lPcFUaRN7m7ZCMuYgndyTFRaSSqm4FtorIp8Aq4MfsCc0YM37Rdgj9mdIpykNds2LQpDFZz5NEUhSYKyKHgY245sVKyY6gjDGQmJTCqrVvsz0UXq3YlaCgUt4OyZh0eZJI2gLrgaa4JllU7G7EmAxTp9OjdT2mLo9hb8gSqiX7cH3rV7MxMmMyJ8M/1aq6VlWdqrpYVceq6rh0JlA0xqRj6KQb6Ti2Ppu3TM/Q/qrKvOUvcMDPwVP1++Pj65/NERpz5WzZM2Oy2dQ5zzIuYRvHHHDPoudZtXb8vx4zafES1gRvJjo5gBZXPZQDURpz5SyRGJONNmyazKt7fqQpAUzrMJqSKvRbMYTpc4eSmJR+F+M38+fwxfr7OeMQnmrxcg5HbIznPHkg8WHgK1U9lr0hZT97INHkhKNHt3Lr1BsRYOKN0yheoiqHD2/h3qm3sN1PqXcyAD3bm5Ll2hBduThNqpRk0ZofmbD3NU76wJu1+tO2+aPeroYxF2TFA4llgWUishL4HPjF1mk35tKG/zKAow74stlrFC9RFYDvN/qybfszdI74hvnBOzhT+HPqHB/PL6sd/LJa2RWYiJ8DPm3yKg3q9vRyDYzJGE86218EquOapr0vECMib4hI1WyKzZg868TxPfycuJ/uARWoU+tGABZtO8yQnzfTqm5t3rr3B2beMJ2+RWpwplAyCYHnOBOQRA0NZGz70ZZETJ7i0RQpqqoish/Yj2sW4OLAdyIyW1WfyY4AjcmLflz8JokO4eYo1/yk+46f4ZGvVxERWpi3bm6AiFC8RFWevOl7nvRyrMZklifrkTyKa+2Pw7jW/HhaVZNExIFr6nZLJMbgel5k0r4F1MGHurV64nQqT05cQ2JSCh/f0ZjChby1MKkx2SNDP9Hu9dQbAD1Tr7MOoKpOEemWHcEZkxet2zSJGIeTQeU6APD10t0s3n6E//WsR7XShb0cnTFZL0N9JO5O9YZpk0iq7ZuyNCpj8rBJaz4l0Kl0ufpZ9hxN4H8/baJl9VLcdlUlb4dmTLbw5B57sYhcparLruRCIlITmJiqKAIYBDTHNeUKuObvilfVqHSO34lr2voUIDn1EDQReQR4GFe/zY/WX2O85eSJvcw8u5+uAeUJCi5Dv2+WICIMuak+7oXZjMl3PJ1ra4D7A/00ILhuVjK0sJWqbsG1siIi4gPsBaao6vDz+4jIMOD45WJIOy2LiLQFbgDqq+pZESmd0QoZk9V+WPQGiQ6hZ4P+DJv1F39sPcIbPerZMrcmX/MkkXTOwuu2B7albipz98P0wrXuuiceAIao6lkAVT2YZVEa44GdO+fxwb55NFB/XphThnV7t3JjVHl6N7EmLZO/eZJI7rpE+eAruO5Fa7QDLYEDqhpziWMUmCUiCnyiqqPc5TWAliLyOq41259Kr/lNRPrhXs89LCzsCkI2BdnJxCTemrmFE4lJ3HtNFepXDPnH9oSEwzzx2yP4oOzYeQ9n/c/wUZ9GdKlX1pq0TL7nSSI5nep1ANAN8LiTXUT8ge7Ac2k29ebi5JJaC1WNczddzRaRzao6H1cdigPNgKuAb0UkIu1T9+7EMwpcU6R4GrcpuNbGxvPIhFXsOXqKIv4wbXUcLaqV5I6mlWkWUZKQQF9e+u4mtjmcVIntQHidFrxyfV2KB9uMvaZgyHAiUdVhqd+LyFAgY3Ni/1NnYKWqHkh1Ll+gJ9D4MtePc389KCJTgCbAfCAW+N6dOJaKiBPXmvKHriA2Y/5hwtLdDJq2njpFt1Gi+qfsdDhpmOzA92wwE34N5Gufs6T4J7Iu8BzRxypzU/dn6Va/vLfDNiZHZebJqCBcI688ld6dRwdgs6rGpneAiAQDDlU96X7dib+b1Kbi6leZKyI1AH9cD00akym7jyTw8rQNdKm4gOUBPyBA7+CqbE/YzxbHSU4GnSRYlSCn0CqxNC/0nUj54vaciCl4PHmyfR2ufgoAHyAUD/tHRCQI6Aj0T7Ppoj4TESkPjFbVLkAZYIq7rdkX+FpVZ7p3/Rz4XETWA+eAu2wySZMVhszcRPMSo5gbGENV9eH9jp9QsWIzb4dlTK7jyR1J6qfXk3F1jCd7cjFVTQBKplPeN52yOKCL+/V2XE/Wp3fOc8AdnsRhzL9Zsm0/pw49yapSR2nnKMb/ekwhqLCNLDcmPZ70kaT7VLsx+U3C6aN8NLs7q4qf4fbAKjxz0/c4fGx+LGMuJcPTyIvIOBEJSfW+uIh8ni1RGeMlGzZ/z3++acvqgATu8GvIwF7TLYkY8y88+Q2pr6rx59+o6jERaZj1IRmT804c38OHMwcw8cwuiqG0ONmOpx9639thGZMneJJIHCJS/PxSuyJSwsPjjcmVThzfQ+/JXYh1KC3PlWbB7rt56IHuOBz2IKExGeFJIhgGLBKR73CN3uoFvJ4tURmTQ9TpZND024hzKE+VvZeX5tbg0fbViaxQzNuhGZNneLIeye/AclzPbAiutUk2ZmNsxlwxdTrZ+NdUflg7hnmndtIyOIynbvwG/0JF/rHf1788xBznCR4t0ZT3V9SjdrlCPNy2mpeiNiZvylAicS+xO1VVGwOWPEyulpBwmPsndmStIxk/Veo7ApiQuJt1X7di2LWfUr68awWCdRsmMfTAAlpJEf482o9jp48w9u6r8PfN8BgUYwyeNW39mZn1SIzJKV/9+iRrHck8HdqcG1q8SLFiYcz5Ywgv/jWeXr/0pY4jiLiUM+x1KKVSYG3cg+xNOMwLXetQt7w1aRnjqRxbj8SYnHA8fidjjqykjU9R7uwy6kJ5iyZP8/DZGszY+iqHSKREciClk4uw9fB1lK9QjU+ur0ud8kW9GLkxeZe31iMxJlt8NudJTgk8evUgAJJSnHzw21bG/7mLo6cLEV7yHepWKIa/jwM/H+GWtqW5LtKmejcmMzxJJLuB24EIVR0sImFAWcCeeDe5woEDa/n6xF908y9N9WrXcSIxiYe+WsmCmMN0rFOGu5qHc3XVkjas15gs5kkiGQE4cY3aGoxr/fTJuNYAMcbrPv79aVIEHmz9BnuOJnDP2GXsOHyat26uT69oW6XQmOziSSJpqqqNRGQVXHiy3VbuMbnClpgfmZK4l1sCKvPjtlA+nreQFKfyxb1NuLpqKW+HZ0y+5kkiSRIRH9xTyYtIKK47FGO8KiX5HK8sfJGiqvwScxu7V2+mZfVSvNK9LlVDbX0QY7KbJ4nkfWAKUMa9PvrNwEvZEpUxHhj/y8OsdyRTO+4qAivUZHiH6jQKK+7tsIwpMDyZRv4rEVkBtHcX3aCqm7MnLGMyZs+exXx4cBF1zvhTLvxR3r2toY3AMiaH/WsiEZG067Kf/y29VkRQ1e4ZuZCI1AQmpiqKAAYBzYGa7rIQIF5Vo9I5fieuDv4UIFlVo9Nsfwp4GwhVVVtqtwBIST7HK78+igPFN/kxhtzcwJKIMV6QkTuS5sAeXEvhLuHvROIRVd0CRAG4+1r2AlNUdfj5fURkGHD8Mqdpm16SEJFKuJbw3X0lsZnc7WxyCst2HCMiNJjyIYEA7D+0leen92aZbyJXHYnktXt6EeDn4+VIjSmYMpJIyuL6kO4N9AF+BCao6oZMXLc9sC31qovuiSF74Rpe7Kl3gWeAaZmIyeQyZ5NT+HZ5LCN+38q+44kAhJUIIrrEStbwOcd8hSZH6/PgTR9eSDDGmJz3r4lEVVOAmcBMESmEK6HMFZHBqvrBFV73Nlx3OKm1xLUOfMylQgFmiYgCn6jqKAAR6Q7sVdU1l2vWEJF+QD+AsLCwKwzb5JSNcSe4/4vl7I0/Q+PKxXmpWx12bJvK6gPjmet7nOIpwouV/48b7uyLjz1gaIxXZXQa+UJAV1xJJBzXCK7vr+SC7mdPugPPpdnUm4uTS2otVDVOREoDs0VkM65p7V8AOv3bdd2JZxRAdHS0XknsJmfsO36Ge8a65gYde1cUZw9/zrjl37POkUyQv3JTYBgPdHyfEiVsundjcoOMdLaPAyKBn4H/qur6TF6zM7BSVQ+kuoYv0BNofKmDVDXO/fWgiEwBmgDHgCrA+buRisBKEWmiqvszGafJAefOnmTJmjHUrdaFEiWqcTIxibvHLMORFMt9DVcwbPHj7PSBMIXnyrSie4sXKVyknLfDNsakkpE7kv/gmu23BvBoquaj87P/ejplanp3Hh2Azaoam94BIhIMOFT1pPt1J2Cwqq4DSqfabycQbaO28gZ1OnlxUjd+TjmKbBxFbfWl2Nki+AbFc7I4vHsMaosPwyJupn3zZ/DxtYkUjMmNMtJHkmWr/IhIEK6O+/5pNl3UZyIi5YHRqtoFKANMcScxX+BrVZ2ZVXEZ7/ji5/78nHKUO4MiKOpflN8PrWdtoaPUcAbQvXgdmkZ0pX6dXojDFpoyJjfz5Mn2TFPVBKBkOuV90ymLA7q4X28HGmTg/OGZDtLkiEXLR/DOocV09AnhqZum8Ptfh/jf4uXc3jSM13vU83Z4xhgP2J96Jsft2rWAZ9aNIMLp4LUe37P/5Fn+79s11C5XlJe61fF2eMYYD1kiMTlq4+ap3PnbAwjwXocR+AeW4tEJqziX7OSjPg3toUJj8iBLJCbH/LniE+5e/CKFFMa1eZ+Q0k3p/+UKlu08xhs96xFhM/UakyflaB+JKVgOH97MH2vHsuPYVnYm7GNeynHC8eHjrl+S4FOVHh/9wa4jCbx6Q11uiKrg7XCNMVfIEonJcjFbZ/LlsqHMOLufJBF8VanodNAloDTPdB3L2oOBPPTVQnx9HHx5b1OaV71o/IUxJg+xRGKyjNOpPDf2en7y2UWAU+kZFMYtjR4iIrwtfn5BAExYupsXpy6jeunCfHpnNJVKBHk5amNMZlkiMVni9NlkXhrTm9mBu2h4oghbjz1As5s7UbN6GQCSU5wMnfUXH8/bRqsaoXzUpyFFAvy8HLUxJitYIjGZFnssgde+fJg/im3mmuQiDOw9k4cmrOG+L5bTpV5Z9h9PZOO+EyQmOenTNIzB3evi62PjPIzJLyyRmExJcSqvjv8vS4supVFKAO/d8Qv+hYrw3YCrGTxjIz+t20f10oXp06QyzSJK0LFOGVt8yph8xhKJyZQxv81lU9AMwlJ8+KjXD/gXKgJAgJ8Pb/Soxxv2lLox+Z4lEnPFYo+eZs5fT3E6UBjd8i2bldeYAsoaqs0VUVXe/fYB1gefo1/xZtSodp23QzLGeIklEnNFvp07hfmFVtIwyZ/7r//Y2+EYY7zImraMx2Ys/IZPtr+Kn8CQLp/h8LEfI2MKMvsEMB6Z8MurvBv3DcHAu43/S/nyUd4OyRjjZTmWSESkJjAxVVEEMAhoDtR0l4UA8aoalc7xO4GTQAqQrKrR7vK3geuBc8A24G5Vjc+OOhRkJxOTGDXtPsadWUFEkg9DOo6jVpWG3g7LGJML5FgiUdUtQBSAiPgAe4Epqjr8/D4iMgw4fpnTtE1nGd3ZwHOqmiwibwLPAc9mYegFVmJSCh/9vpUZa/dSyec1VpU4RFRCEK/0mErVcuW9HZ4xJpfwVtNWe2Cbqu46XyCup9R6Ae08OZGqzkr19k/g5iyJsIBbtPUwz09Zx+4jJ+gYPoxFgcfoKmUZeNdUQoKDvR2eMSYX8VYiuWiNdqAlcEBVYy5xjAKzRESBT1R1VDr73MM/m88uEJF+QD+AsLCwKwo6v5mz6E0W75lHbOIR9qacIdy3MPc1foqJf1Xn6yW7uTp0FZVrTGWRz1nuL1KLR26caOunG2MuIqqasxcU8QfigLqqeiBV+Uhgq6oOu8Rx5VU1TkRK42rOekRV56fa/gIQDfTUf6lUdHS0Ll++PAtqkzelJJ9j+NRbGXt6K0WcSkV8KecbzPLk45xwCJGnChHs78MS/wSKOZVHK3SgV6fh3g7bGONlIrLifP90at64I+kMrEyTRHyBnkDjSx2kqnHurwdFZArQBJjvPv4uoBvQ/t+SSEF3+tR+nv2+B/P0FH0CK/N0j+9w+BTi+1V7+fOHBVwVMpYNxfYiwIPF6vOf9sPsiXVjzGV5I5H05uJmrQ7AZlWNTe8AEQkGHKp60v26EzDYve06XJ3rrVU1IfvCzvvij+3gvqk3slVSeLFcO3p1eo85mw4ydNYWNu8/SePKlXmt91RCfE8CEFS4tJcjNsbkBTmaSEQkCOgI9E+z6aI+ExEpD4xW1S5AGWCKe9ZYX+BrVZ3p3vVDoBAw2739T1UdkG2VyKOOH99Nv6k92CEpfFinP0XL/4ebP17Mil3HCC8ZxHu3RXF9/fI4HAIEejtcY0wekuN9JLlBQesjOXliL/0md2OLJPFG1Xv47UB7Jq2IpWRwIf6vUw1ublwRP1sfxBjzL3JTH4nJQWs3TOS1pf8jRpJ5Oex2Xppfn/iEvfRrGcHD7arZKoXGmEyzRJJP7dq1gPfmP89sZzwlUN6IuINhy5tzNimRaQ9dQ53yRb0dojEmn7BEkg+cOZfCD2vjmLZ6L7dFV+T0/jd5e//v+Cg8EFKP29oOY8DEXew+Es+X9zaxJGKMyVKWSPIwp1MZNnsL4//czfEzSZQJOMqEsw+zrvBZrpHCDO7yGUWK1+LJb1ezdMdR3u/dkKYRJb0dtjEmn7Ee1jxszKKdfPT7NppFlGB454OEhL3JpuBEoo9E8MS1MznjU4WbRi7ip3X7ebFrbbo3sPmxjDFZz+5I8qiYAyd5c+Zm2tcqRfsy4xm841dKAcPrDOT/ZpWh75gVnDqbDMBnd0XTvnYZ7wZsjMm3LJHkQUkpTp74djUlCiUS6vscr+47RAsJZkiPbwgpXoXR5eK5bdRiqpUuzMjbG1OpRJC3QzbG5GOWSPKgD37bytFDKylf+XN+THEyoGgkA64fh4+vPwBRlUL449l2FA30s+dDjDHZzhJJHvPH1sPMX/oREv4r+0X4sOY9tG725EX7lSxcyAvRGWMKIkskecj2gyf57Ie+7KiwkwinD++1H0FY2DXeDssYU8BZIskj9h2K5eXJPVhdIpEOUpzXb55skyoaY3IFSyR5QNz+ddw/ow97A5V7gxrz2E1jbIEpY0yuYZ9GudzR+D0MmNGHQz5OHih+J4/fMs6SiDEmV7FPpFzsdMIxHpzUnT2+yu2F+9D/hme8HZIxxlzEEkkudeZsAg+Pv5YN/sn08e/AY7e84O2QjDEmXZZIvESdTlasGccz41vT8fNIvv/1qQvbjp44woCxbVhe6Ay9HA15us9w7wVqjDH/Isc620WkJjAxVVEEMAhoDtR0l4UA8aoalc7xO4GTQAqQfH5xFREp4T5vOLAT6KWqx7KhCllm4+apvLj4ZWIcToo4lYriy8t7f2HDN+u5o+X7PDfjVjYEJHO7X2MG9hnr7XCNMeayvLJCooj4AHuBpqq6K1X5MOC4qg5O55idQLSqHk5T/hZwVFWHiMhAoLiqPnu563tzhcTV67/mwWVvEKzwYFhnrrv6Ofz8gnh/eh/GnIqhkFNJFuhftCMP9HzXKzEaY0x6ctsKie2BbWmSiAC9gHYenusGoI379ThgLnDZROItS1eN5uHVwwlVYfR1YylXvvGFbb3ajWf9mMfZV2QR/6nUiz7XDfJipMYYk3HeSiS3ARPSlLUEDqhqzCWOUWCWiCjwiaqOcpeXUdV9AKq6T0TSfUpPRPoB/QDCwsIyG79H1Olk6u8DeX33T1RUB592m0Bo6boXtsfFn6H3p38Sn3ATX/d6m3oVi+VofMYYkxk53rQlIv5AHFBXVQ+kKh8JbFXVYZc4rryqxrkTxWzgEVWdLyLxqhqSar9jqlr8cjHkZNPW/v2r+e8vA1jIaWomOpDE5wgsEkHxID98REBg6Y6jHE9IYvx9TWlQKSRH4jLGGE/lpqatzsDKNEnEF+gJNL7UQaoa5/56UESmAE2A+cABESnnvhspBxzM1ug9MPfPYTy/aQxJQIPDNTgV+BjFiwZy9PQ5dh4+jVMVVSgS4MsHvRtaEjHG5EneSCS9ubhZqwOwWVVj0ztARIIBh6qedL/uBJzvkJ8O3AUMcX+dli1Re2j6b88zaPd0wpMdHNrTlwYtuvBkx5r4OMTboRljTJbK0UQiIkFAR6B/mk0X9ZmISHlgtKp2AcoAU1z98fgCX6vqTPeuQ4BvReReYDdwS/bVIGO+/Kk/bx1aRO1EX7btG8hrt7Smc71y3g7LGGOyRY4mElVNAEqmU943nbI4oIv79XagwSXOeQTXKLBc4dPpd/L+sVXUO12I3cdeYly/NkRWsM5zY0z+ZbP/XiFVZffRBPbGn2FffCJx8WeI3fEiP/ltpMHJII4kvc6kh1tQrligt0M1xphsZYnkChw9fY5HJ6xi4da/n41sUfIz1paOodGZICqW+4iRXRtQJMDPi1EaY0zOsETiofV7j9P/yxUcOnWWgZ1rUb9CMbZs+i/vHI2hrRRl2L2z8fML8naYxhiTYyyReGDKqlgGTl5HyWB/vhvQnPoVQ/hm5iO8c3QuraQwQ2+daUnEGFPg2Oy/Hti7ZzYdyi1mbJ+S1CtflK9+fpDXD8yljRTh3Vtn4V+oiLdDNMaYHGd3JB44cvob5heOY/7cKQQ5lQSH0N5RlLd7zcKvULC3wzPGGK+wROKBB9oNo+Pueew8spFdJ3ZR1K8I/bp9Zs1ZxpgCzRKJB0qXiaR0mUiu9nYgxhiTi1gfiTHGmEyxRGKMMSZTLJEYY4zJFEskxhhjMsUSiTHGmEyxRGKMMSZTLJEYY4zJFEskxhhjMkVU1dsx5DgROQTsusLDSwGH/3Wv/MXqXDBYnQuGzNS5sqqGpi0skIkkM0RkuapGezuOnGR1LhiszgVDdtTZmraMMcZkiiUSY4wxmWKJxHOjvB2AF1idCwarc8GQ5XW2PhJjjDGZYnckxhhjMsUSiTHGmEyxROIBEblORLaIyFYRGejteLKaiFQSkd9FZJOIbBCRx9zlJURktojEuL8W93asWU1EfERklYjMcL/P13UWkRAR+U5ENrv/v5sXgDo/4f65Xi8iE0QkIL/VWUQ+F5GDIrI+Vdkl6ygiz7k/z7aIyLVXel1LJBkkIj7AR0BnoA7QW0TqeDeqLJcM/J+q1gaaAQ+56zgQmKOq1YE57vf5zWPAplTv83ud3wNmqmotoAGuuufbOotIBeBRIFpVIwEf4DbyX53HAtelKUu3ju7f7duAuu5jRrg/5zxmiSTjmgBbVXW7qp4DvgFu8HJMWUpV96nqSvfrk7g+XCrgquc4927jgBu9EmA2EZGKQFdgdKrifFtnESkKtAI+A1DVc6oaTz6us5svECgivkAQEEc+q7OqzgeOpim+VB1vAL5R1bOqugPYiutzzmOWSDKuArAn1ftYd1m+JCLhQENgCVBGVfeBK9kApb0YWnYYDjwDOFOV5ec6RwCHgDHu5rzRIhJMPq6zqu4FhgK7gX3AcVWdRT6ucyqXqmOWfaZZIsk4SacsX46dFpHCwGTgcVU94e14spOIdAMOquoKb8eSg3yBRsBIVW0InCbvN+lclrtf4AagClAeCBaRO7wblddl2WeaJZKMiwUqpXpfEdetcb4iIn64kshXqvq9u/iAiJRzby8HHPRWfNmgBdBdRHbiaq5sJyLjyd91jgViVXWJ+/13uBJLfq5zB2CHqh5S1STge+Bq8nedz7tUHbPsM80SScYtA6qLSBUR8cfVSTXdyzFlKRERXO3mm1T1nVSbpgN3uV/fBUzL6diyi6o+p6oVVTUc1//pb6p6B/m7zvuBPSJS013UHthIPq4zriatZiIS5P45b4+rDzA/1/m8S9VxOnCbiBQSkSpAdWDplVzAnmz3gIh0wdWe7gN8rqqvezeirCUi1wALgHX83V/wPK5+km+BMFy/kLeoatoOvTxPRNoAT6lqNxEpST6us4hE4Rpc4A9sB+7G9Ydlfq7zf4FbcY1OXAXcBxQmH9VZRCYAbXBNFX8AeBmYyiXqKCIvAPfg+p48rqo/X9F1LZEYY4zJDGvaMsYYkymWSIwxxmSKJRJjjDGZYonEGGNMplgiMcYYkymWSIzJBBEpKSKr3f/2i8he9+tTIjIim675uIjc+S/7fCMi1bPj+sakZcN/jckiIvIKcEpVh2bjNXyBlUAjVU2+zH6tgTtU9f7sisWY8+yOxJhsICJtUq1t8oqIjBORWSKyU0R6ishbIrJORGa6p6VBRBqLyDwRWSEiv5yf1iKNdsBKVU0WkaoisjLVNauLyPk5wxYAHdyJx5hsZYnEmJxRFddU9TcA44HfVbUecAbo6k4mHwA3q2pj4HMgvZkTWgArAFR1G3Dc/ZQ6uJ5OH+ve5sQ1LXiDbKqPMRfYXyvG5IyfVTVJRNbhmmJnprt8HRAO1AQigdmuqaDwwTXdeVrl+OcCXKOBu0XkSVzTf6ReT+IgrpluC9LMxsYLLJEYkzPOgutOQUSS9O/OSSeu30MBNqhq8385zxkgINX7ybjmU/oNWKGqR1JtC3Dvb0y2sqYtY3KHLUCoiDQH13T+IlI3nf02AdXOv1HVROAXYCQwJs2+NYAN2ROuMX+zRGJMLuBevvlm4E0RWQOsxrVeRlo/41omN7WvcC1INOt8gYiUAc6cXxnPmOxkw3+NyWNEZArwjKrGuN8/BRRT1ZdS7fMEcEJVP/NSmKYAsT4SY/Kegbg63WPcSaUqrmHBqcUDX+ZwXKaAsjsSY4wxmWJ9JMYYYzLFEokxxphMsURijDEmUyyRGGOMyRRLJMYYYzLl/wFeaAdkiqK5SQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] diff --git a/python/swiftest/swiftest/io.py b/python/swiftest/swiftest/io.py index 189bfac18..14f137838 100644 --- a/python/swiftest/swiftest/io.py +++ b/python/swiftest/swiftest/io.py @@ -659,6 +659,7 @@ def swiftest_xr2infile(ds, param, framenum=-1): # Swiftest Central body file cbfile = open(param['CB_IN'], 'w') print(GMSun, file=cbfile) + print(GMSun, file=cbfile) print(RSun, file=cbfile) print(J2, file=cbfile) print(J4, file=cbfile) @@ -687,6 +688,8 @@ def swiftest_xr2infile(ds, param, framenum=-1): # Now make Swiftest files cbfile = FortranFile(param['CB_IN'], 'w') MSun = np.double(1.0) + cbid = 0 + cbfile.write_record(cbid) cbfile.write_record(np.double(GMSun)) cbfile.write_record(np.double(rmin)) cbfile.write_record(np.double(J2)) diff --git a/src/io/io.f90 b/src/io/io.f90 index 245c6a052..12fe2cdab 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -105,6 +105,9 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("BIG_DISCARD") call util_toupper(param_value) if (param_value == "YES" .or. param_value == 'T' ) self%lbig_discard = .true. + case ("RHILL_PRESENT") + call util_toupper(param_value) + if (param_value == "YES" .or. param_value == 'T' ) self%lrhill_present = .true. case ("MU2KG") read(param_value, *) self%MU2KG case ("TU2S") @@ -213,6 +216,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) write(*,*) "ENC_OUT = ",trim(adjustl(self%encounter_file)) write(*,*) "EXTRA_FORCE = ",self%lextra_force write(*,*) "BIG_DISCARD = ",self%lbig_discard + write(*,*) "RHILL_PRESENT = ",self%lrhill_present write(*,*) "ENERGY = ",self%lenergy write(*,*) "MU2KG = ",self%MU2KG write(*,*) "TU2S = ",self%TU2S @@ -315,6 +319,7 @@ module subroutine io_param_writer(self, unit, iotype, v_list, iostat, iomsg) write(param_name, Afmt) "MU2KG"; write(param_value, Rfmt) param%MU2KG; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "TU2S"; write(param_value, Rfmt) param%TU2S ; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "DU2M"; write(param_value, Rfmt) param%DU2M; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "RHILL_PRESENT"; write(param_value, Lfmt) param%lrhill_present; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "EXTRA_FORCE"; write(param_value, Lfmt) param%lextra_force; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "BIG_DISCARD"; write(param_value, Lfmt) param%lbig_discard; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "CHK_CLOSE"; write(param_value, Lfmt) param%lclose; write(unit, Afmt) adjustl(param_name), adjustl(param_value) @@ -592,10 +597,15 @@ module subroutine io_read_body_in(self, param) select type(self) class is (swiftest_pl) read(iu, *, iostat = ierr) self%id(i), val - self%mass(i) = real(val / param%GU, kind=DP) self%Gmass(i) = real(val, kind=DP) + self%mass(i) = real(val / param%GU, kind=DP) + if (param%lclose) then - read(iu, *, iostat = ierr) self%radius(i) + if (param%lrhill_present) then + read(iu, *, iostat = ierr) self%radius(i), self%rhill(i) + else + read(iu, *, iostat = ierr) self%radius(i) + end if if (ierr /= 0 ) exit else self%radius(i) = 0.0_DP @@ -623,6 +633,7 @@ module subroutine io_read_body_in(self, param) ierr = -1 end select close(iu) + if (ierr /= 0 ) then write(*,*) 'Error reading in initial conditions from ',trim(adjustl(infile)) call util_exit(FAILURE) @@ -932,6 +943,7 @@ module subroutine io_read_initialize_system(self, param) call self%cb%initialize(param) call self%pl%initialize(param) + if (.not.param%lrhill_present) call self%pl%set_rhill(self%cb) call self%tp%initialize(param) call self%set_msys() call self%pl%set_mu(self%cb) diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index b0a804610..e4d967d19 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -61,6 +61,7 @@ module swiftest_classes real(DP) :: inv_c2 = -1.0_DP !! Inverse speed of light squared in the system units !Logical flags to turn on or off various features of the code + logical :: lrhill_present = .false. !! Hill radii are given as an input rather than calculated by the code (can be used to inflate close encounter regions manually) logical :: lextra_force = .false. !! User defined force function turned on logical :: lbig_discard = .false. !! Save big bodies on every discard logical :: lclose = .false. !! Turn on close encounters diff --git a/src/rmvs/rmvs_step.f90 b/src/rmvs/rmvs_step.f90 index 035783901..82f3a4101 100644 --- a/src/rmvs/rmvs_step.f90 +++ b/src/rmvs/rmvs_step.f90 @@ -29,7 +29,6 @@ module subroutine rmvs_step_system(self, param, t, dt) associate(system => self, ntp => tp%nbody, npl => pl%nbody) allocate(xbeg, source=pl%xh) allocate(vbeg, source=pl%vh) - call pl%set_rhill(cb) call pl%set_beg_end(xbeg = xbeg, vbeg = vbeg) ! ****** Check for close encounters ***** ! system%rts = RHSCALE From dffc972677a8eee372991a2bcfc7509cc2765138 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 18:15:28 -0400 Subject: [PATCH 16/23] Fixed initial conditions generator for RMVS comparison run (but now the test particles are not the same --- .../9pl_18tp_encounters/cb.swiftest.in | 4 +- .../9pl_18tp_encounters/init_cond.py | 146 ++---- .../9pl_18tp_encounters/param.swifter.in | 52 +- .../9pl_18tp_encounters/param.swiftest.in | 65 +-- .../9pl_18tp_encounters/pl.swifter.in | 64 +-- .../9pl_18tp_encounters/pl.swiftest.in | 32 +- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 486 +++++++++++++++--- examples/whm_gr_test/init_cond.py | 11 +- python/swiftest/swiftest/io.py | 6 +- src/io/io.f90 | 1 + 10 files changed, 564 insertions(+), 303 deletions(-) diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in index 0e35c1909..81c636655 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in @@ -1,5 +1,5 @@ -0.0002959122081920778 -0.0002959122081920778 +0 +0.00029591220819207774 0.004650467260962157 4.7535806948127355e-12 -2.2473967953572827e-18 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py index 5b5a95bf6..11e04e0f3 100755 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py @@ -20,67 +20,27 @@ swiftest_bin = "bin.swiftest.dat" swiftest_enc = "enc.swiftest.dat" -#Values from JPL Horizons -AU2M = np.longdouble(const.au.value) -GMSunSI = np.longdouble(const.GM_sun.value) -Rsun = np.longdouble(const.R_sun.value) -GC = np.longdouble(const.G.value) -JD = 86400 -year = np.longdouble(365.25 * JD) -c = np.longdouble(299792458.0) - -MU2KG = np.longdouble(GMSunSI / GC) #Conversion from mass unit to kg -DU2M = np.longdouble(AU2M) #Conversion from radius unit to centimeters -TU2S = np.longdouble(JD) #Conversion from time unit to seconds -GU = np.longdouble(GC / (DU2M**3 / (MU2KG * TU2S**2))) -GMSun = np.longdouble(GMSunSI / (DU2M**3 / TU2S**2)) - -t_0 = 0 # simulation start time -deltaT = 1.00 * JD / TU2S # simulation step size -end_sim = year / TU2S # simulation end time -t_print = deltaT #output interval to print results - -iout = int(np.ceil(t_print / deltaT)) -rmin = Rsun / DU2M -rmax = 1000.0 - -sys.stdout = open(swiftest_input, "w") -print(f'! VERSION Swiftest input file generated using init_cond.py') -print(f'T0 {t_0} ') -print(f'TSTOP {end_sim}') -print(f'DT {deltaT}') -print(f'CB_IN {swiftest_cb}') -print(f'PL_IN {swiftest_pl}') -print(f'TP_IN {tpin}') -print(f'IN_TYPE ASCII') -print(f'ISTEP_OUT {iout:d}') -print(f'ISTEP_DUMP {iout:d}') -print(f'BIN_OUT {swiftest_bin}') -print(f'OUT_TYPE REAL8') -print(f'OUT_FORM XV') -print(f'OUT_STAT REPLACE') -print(f'CHK_CLOSE yes') -print(f'CHK_RMIN {rmin}') -print(f'CHK_RMAX {rmax}') -print(f'CHK_EJECT {rmax}') -print(f'CHK_QMIN {rmin}') -print(f'CHK_QMIN_COORD HELIO') -print(f'CHK_QMIN_RANGE {rmin} {rmax}') -print(f'ENC_OUT {swiftest_enc}') -print(f'EXTRA_FORCE no') -print(f'BIG_DISCARD no') -print(f'ROTATION no') -print(f'RHILL_PRESENT no') -print(f'GR no') -print(f'MU2KG {MU2KG}') -print(f'DU2M {DU2M}') -print(f'TU2S {TU2S}') -sys.stdout = sys.__stdout__ -sim = swiftest.Simulation(param_file=swiftest_input) -param = sim.param - -# Dates to fetch planet ephemerides from JPL Horizons -tstart = '2021-06-15' +sim = swiftest.Simulation() + +sim.param['T0'] = 0.0 +sim.param['DT'] = 1.0 +sim.param['TSTOP'] = 365.25 +sim.param['ISTEP_OUT'] = 11 +sim.param['ISTEP_DUMP'] = 1 +sim.param['CHK_QMIN_COORD'] = "HELIO" +sim.param['CHK_QMIN'] = swiftest.RSun / swiftest.AU2M +sim.param['CHK_QMIN_RANGE'] = f"{swiftest.RSun / swiftest.AU2M} 1000.0" +sim.param['CHK_RMIN'] = swiftest.RSun / swiftest.AU2M +sim.param['CHK_RMAX'] = 1000.0 +sim.param['CHK_EJECT'] = 1000.0 +sim.param['OUT_FORM'] = "XV" +sim.param['OUT_STAT'] = "UNKNOWN" +sim.param['GR'] = 'NO' +sim.param['CHK_CLOSE'] = 'YES' + +sim.param['MU2KG'] = swiftest.MSun +sim.param['TU2S'] = swiftest.JD2S +sim.param['DU2M'] = swiftest.AU2M bodyid = { "Sun": 0, @@ -106,7 +66,7 @@ dims = ['time', 'id', 'vec'] tp = [] t = np.array([0.0]) -clab, plab, tlab = swio.make_swiftest_labels(param) +clab, plab, tlab = swio.make_swiftest_labels(sim.param) # For each planet, we will initialize a pair of test particles. One on its way in, and one on its way out. We will also initialize two additional particles that don't encounter anything tpnames = np.arange(101, 101 + ntp) @@ -155,50 +115,18 @@ tpda = xr.concat(tp,dim='time') tpds = tpda.to_dataset(dim = 'vec') -ds = xr.combine_by_coords([ds, tpds]) -swio.swiftest_xr2infile(ds, param) - -# Swifter PL file -plfile = open(swifter_pl, 'w') -print(npl + 1, file=plfile) -print(0,GMSun,file=plfile) -print('0.0 0.0 0.0',file=plfile) -print('0.0 0.0 0.0',file=plfile) -for i in pl.id: - pli = pl.sel(id=i) - print(f"{int(i)} {pli['Mass'].values[0]} {pli['Rhill'].values[0]}", file=plfile) - print(f"{pli['Radius'].values[0]}", file=plfile) - print(f"{pli['px'].values[0]} {pli['py'].values[0]} {pli['pz'].values[0]}", file=plfile) - print(f"{pli['vx'].values[0]} {pli['vy'].values[0]} {pli['vz'].values[0]}", file=plfile) -plfile.close() - -# Swifter parameter file -sys.stdout = open(swifter_input, "w") -print(f"! VERSION Swifter input file generated using init_cond.py") -print(f"T0 {t_0} ") -print(f"TSTOP {end_sim}") -print(f"DT {deltaT}") -print(f"PL_IN {swifter_pl}") -print(f"TP_IN {tpin}") -print(f"IN_TYPE ASCII") -print(f"ISTEP_OUT {iout:d}") -print(f"ISTEP_DUMP {iout:d}") -print(f"BIN_OUT {swifter_bin}") -print(f"OUT_TYPE REAL8") -print(f"OUT_FORM XV") -print(f"OUT_STAT UNKNOWN") -print(f"J2 {swiftest.J2Sun}") -print(f"J4 {swiftest.J4Sun}") -print(f"CHK_CLOSE yes") -print(f"CHK_RMIN {rmin}") -print(f"CHK_RMAX {rmax}") -print(f"CHK_EJECT {rmax}") -print(f"CHK_QMIN {rmin}") -print(f"CHK_QMIN_COORD HELIO") -print(f"CHK_QMIN_RANGE {rmin} {rmax}") -print(f"ENC_OUT {swifter_enc}") -print(f"EXTRA_FORCE no") -print(f"BIG_DISCARD no") -print(f"RHILL_PRESENT yes") -sys.stdout = sys.__stdout__ - +sim.ds = xr.combine_by_coords([sim.ds, tpds]) +swio.swiftest_xr2infile(sim.ds, sim.param) + +sim.param['PL_IN'] = swiftest_pl +sim.param['TP_IN'] = tpin +sim.param['CB_IN'] = swiftest_cb +sim.param['BIN_OUT'] = swiftest_bin +sim.param['ENC_OUT'] = swiftest_enc +sim.save(swiftest_input) + +sim.param['PL_IN'] = swifter_pl +sim.param['TP_IN'] = tpin +sim.param['BIN_OUT'] = swifter_bin +sim.param['ENC_OUT'] = swifter_enc +sim.save(swifter_input, codename="Swifter") diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in index d6a50fc37..ab8bf65ca 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in @@ -1,26 +1,26 @@ -! VERSION Swifter input file generated using init_cond.py -T0 0 -TSTOP 365.25 -DT 1.0 -PL_IN pl.swifter.in -TP_IN tp.in -IN_TYPE ASCII -ISTEP_OUT 1 -ISTEP_DUMP 1 -BIN_OUT bin.swifter.dat -OUT_TYPE REAL8 -OUT_FORM XV -OUT_STAT UNKNOWN -J2 2.198e-07 -J4 -4.805e-09 -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swifter.dat -EXTRA_FORCE no -BIG_DISCARD no -RHILL_PRESENT yes +! VERSION Swifter parameter file converted from Swiftest +T0 0.0 +TSTOP 365.25 +DT 1.0 +ISTEP_OUT 11 +ISTEP_DUMP 1 +OUT_FORM XV +OUT_TYPE REAL8 +OUT_STAT UNKNOWN +IN_TYPE ASCII +PL_IN pl.swifter.in +TP_IN tp.in +BIN_OUT bin.swifter.dat +ENC_OUT enc.swifter.dat +CHK_QMIN 0.004650467260962157 +CHK_RMIN 0.004650467260962157 +CHK_RMAX 1000.0 +CHK_EJECT 1000.0 +CHK_QMIN_COORD HELIO +CHK_QMIN_RANGE 0.004650467260962157 1000.0 +EXTRA_FORCE NO +BIG_DISCARD NO +CHK_CLOSE YES +J2 4.7535806948127355e-12 +J4 -2.2473967953572827e-18 +RHILL_PRESENT YES diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in index 34f9a5c88..385ac46bb 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in @@ -1,30 +1,35 @@ -! VERSION Swiftest input file generated using init_cond.py -T0 0 -TSTOP 365.25 -DT 1.0 -CB_IN cb.swiftest.in -PL_IN pl.swiftest.in -TP_IN tp.in -IN_TYPE ASCII -ISTEP_OUT 1 -ISTEP_DUMP 1 -BIN_OUT bin.swiftest.dat -OUT_TYPE REAL8 -OUT_FORM XV -OUT_STAT REPLACE -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swiftest.dat -EXTRA_FORCE no -BIG_DISCARD no -ROTATION no -RHILL_PRESENT no -GR no -MU2KG 1.988409870698051e+30 -DU2M 149597870700.0 -TU2S 86400.0 +! VERSION Swiftest parameter input +T0 0.0 +TSTOP 365.25 +DT 1.0 +ISTEP_OUT 11 +ISTEP_DUMP 1 +OUT_FORM XV +OUT_TYPE REAL8 +OUT_STAT UNKNOWN +IN_TYPE ASCII +PL_IN pl.swiftest.in +TP_IN tp.in +CB_IN cb.swiftest.in +BIN_OUT bin.swiftest.dat +ENC_OUT enc.swiftest.dat +CHK_QMIN 0.004650467260962157 +CHK_RMIN 0.004650467260962157 +CHK_RMAX 1000.0 +CHK_EJECT 1000.0 +CHK_QMIN_COORD HELIO +CHK_QMIN_RANGE 0.004650467260962157 1000.0 +MU2KG 1.988409870698051e+30 +TU2S 86400 +DU2M 149597870700.0 +EXTRA_FORCE NO +BIG_DISCARD NO +CHK_CLOSE YES +FRAGMENTATION NO +ROTATION NO +TIDES NO +ENERGY NO +GR NO +YARKOVSKY NO +YORP NO +MTINY 0.0 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in index 5bed331a6..7961512ca 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in @@ -2,35 +2,35 @@ 0 0.00029591220819207775568 0.0 0.0 0.0 0.0 0.0 0.0 -1 4.9125474498983625e-11 0.0014751244996981092 -1.6306381826061646e-05 -0.3424231950105548 0.04541859803875346 -0.02769885218647143 --0.009135456552973951 0.02914778346055028 0.003219860945895814 -2 7.243452483873647e-10 0.00675910592748785 -4.0453784346544176e-05 --0.7187409324847692 0.008460121607685698 0.04159114061029223 --0.000355507214371255 -0.02031492463311098 -0.0002582876464863964 -3 8.997011382166019e-10 0.010044781409779763 -4.25875607065041e-05 -0.3408913444637776 -0.9577324614296441 4.435598231277718e-05 -0.01592829229600895 0.005704842145070232 -3.222239146362505e-07 -4 9.549535102761465e-11 0.007246745952808949 -2.2657408050928896e-05 --1.518194954784943 0.6839686166809457 0.05157497542651887 --0.005224888295856506 -0.01156432042916445 -0.0001141828894241638 -5 2.825345908631355e-07 0.3552712944567904 -0.0004673261703049093 -4.04554302433205 -2.997516585076586 -0.07806209765007878 -0.004406596292841761 0.006425243736188545 -0.0001252737469736559 -6 8.459715183006416e-08 0.43765252895139073 -0.00038925687730393614 -6.294914485420795 -7.709936089816689 -0.1164782091116569 -0.004015969235853927 0.003521900151979878 -0.000221006899984545 -7 1.2920249163736674e-08 0.46953353749301263 -0.00016953449859497232 -14.85869768503949 13.00480689249104 -0.1442220329069338 --0.002615247360000599 0.002782629142130045 4.407243103045647e-05 -8 1.5243589003230834e-08 0.7812837944287938 -0.00016458790412449367 -29.55697963607957 -4.6325049341728 -0.5858344271811813 -0.0004702098511244648 0.0031273464291932 -7.514820514613305e-05 +1 4.9125474498983623693e-11 0.0014751244996981091688 +1.6306381826061645943e-05 +0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 +-0.009135456552973951483 0.029147783460550278495 0.003219860945895814102 +2 7.243452483873646905e-10 0.006759105927487850036 +4.0453784346544178454e-05 +-0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 +-0.00035550721437125498313 -0.020314924633110978403 -0.00025828764648639637377 +3 8.9970113821660187435e-10 0.010044781409779763954 +4.25875607065040958e-05 +0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 +0.015928292296008950135 0.005704842145070231768 -3.222239146362504855e-07 +4 9.549535102761465607e-11 0.007246745952808948377 +2.265740805092889601e-05 +-1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 +-0.0052248882958565064094 -0.011564320429164449966 -0.0001141828894241637938 +5 2.825345908631354893e-07 0.35527129445679039879 +0.00046732617030490929307 +4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 +0.0044065962928417608604 0.006425243736188544774 -0.00012527374697365590813 +6 8.459715183006415395e-08 0.43765252895139074356 +0.00038925687730393611812 +6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 +0.004015969235853926976 0.0035219001519798780186 -0.00022100689998454499602 +7 1.2920249163736673626e-08 0.4695335374930126262 +0.00016953449859497231466 +14.8586976850394894 13.004806892491039605 -0.14422203290693380584 +-0.002615247360000599007 0.0027826291421300451516 4.4072431030456472162e-05 +8 1.5243589003230834323e-08 0.78128379442879379807 +0.000164587904124493665 +29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 +0.00047020985112446482199 0.0031273464291932001093 -7.514820514613305166e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in index 7aed2bd36..5e89dafc6 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in @@ -1,33 +1,33 @@ 8 -1 4.9125474498983625056e-11 +1 4.9125474498983623693e-11 1.6306381826061645943e-05 0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 --0.0091354565529739517565 0.029147783460550279367 0.0032198609458958141984 -2 7.243452483873647106e-10 +-0.009135456552973951483 0.029147783460550278495 0.003219860945895814102 +2 7.243452483873646905e-10 4.0453784346544178454e-05 -0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 --0.00035550721437125499377 -0.02031492463311097901 -0.0002582876464863963815 -3 8.997011382166018993e-10 +-0.00035550721437125498313 -0.020314924633110978403 -0.00025828764648639637377 +3 8.9970113821660187435e-10 4.25875607065040958e-05 0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 -0.015928292296008950611 0.0057048421450702319388 -3.2222391463625049515e-07 -4 9.549535102761465872e-11 +0.015928292296008950135 0.005704842145070231768 -3.222239146362504855e-07 +4 9.549535102761465607e-11 2.265740805092889601e-05 -1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 --0.0052248882958565065657 -0.011564320429164450312 -0.000114182889424163797216 -5 2.8253459086313549713e-07 +-0.0052248882958565064094 -0.011564320429164449966 -0.0001141828894241637938 +5 2.825345908631354893e-07 0.00046732617030490929307 4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 -0.004406596292841760992 0.0064252437361885449665 -0.00012527374697365591187 -6 8.45971518300641563e-08 +0.0044065962928417608604 0.006425243736188544774 -0.00012527374697365590813 +6 8.459715183006415395e-08 0.00038925687730393611812 6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 -0.0040159692358539270963 0.003521900151979878124 -0.00022100689998454500264 -7 1.2920249163736673984e-08 +0.004015969235853926976 0.0035219001519798780186 -0.00022100689998454499602 +7 1.2920249163736673626e-08 0.00016953449859497231466 14.8586976850394894 13.004806892491039605 -0.14422203290693380584 --0.0026152473600005990854 0.0027826291421300452348 4.4072431030456473482e-05 -8 1.5243589003230834746e-08 +-0.002615247360000599007 0.0027826291421300451516 4.4072431030456472162e-05 +8 1.5243589003230834323e-08 0.000164587904124493665 29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 -0.00047020985112446483607 0.0031273464291932002029 -7.514820514613305391e-05 +0.00047020985112446482199 0.0031273464291932001093 -7.514820514613305166e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index f57828160..d564f3b97 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -22,9 +22,9 @@ "output_type": "stream", "text": [ "Reading Swifter file param.swifter.in\n", - "Reading in time 3.660e+02\n", + "Reading in time 3.630e+02\n", "Creating Dataset\n", - "Successfully converted 367 output frames.\n", + "Successfully converted 34 output frames.\n", "Swifter simulation data stored as xarray DataSet .ds\n" ] } @@ -46,9 +46,9 @@ "output_type": "stream", "text": [ "Reading Swiftest file param.swiftest.in\n", - "Reading in time 3.660e+02\n", + "Reading in time 3.630e+02\n", "Creating Dataset\n", - "Successfully converted 367 output frames.\n", + "Successfully converted 34 output frames.\n", "Swiftest simulation data stored as xarray DataSet .ds\n" ] } @@ -457,84 +457,410 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
<xarray.DataArray 'px' (time (d): 367)>\n",
+       "
<xarray.DataArray 'id' (id: 24)>\n",
+       "array([  1,   2,   3,   4,   5,   6,   7,   8, 101, 102, 103, 104, 105, 106,\n",
+       "       107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n",
+       "Coordinates:\n",
+       "  * id       (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116
" + ], + "text/plain": [ + "\n", + "array([ 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104, 105, 106,\n", + " 107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n", + "Coordinates:\n", + " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "swiftdiff.id" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'px' (time (d): 34)>\n",
        "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
-       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
+       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
        "Coordinates:\n",
        "    id        int64 4\n",
-       "  * time (d)  (time (d)) float64 0.0 1.0 2.0 3.0 4.0 ... 363.0 364.0 365.0 366.0
" + " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
" ], "text/plain": [ - "\n", + "\n", "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", " id int64 4\n", - " * time (d) (time (d)) float64 0.0 1.0 2.0 3.0 4.0 ... 363.0 364.0 365.0 366.0" + " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -545,12 +871,12 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -571,12 +897,12 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -597,7 +923,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -609,7 +935,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -632,7 +958,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -644,7 +970,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] diff --git a/examples/whm_gr_test/init_cond.py b/examples/whm_gr_test/init_cond.py index de15165c1..ddd4a315c 100755 --- a/examples/whm_gr_test/init_cond.py +++ b/examples/whm_gr_test/init_cond.py @@ -2,6 +2,11 @@ import swiftest sim = swiftest.Simulation() +sim.param['PL_IN'] = "pl.swiftest.in" +sim.param['TP_IN'] = "tp.swiftest.in" +sim.param['CB_IN'] = "cb.swiftest.in" +sim.param['BIN_OUT'] = "bin.swiftest.dat" +sim.param['ENC_OUT'] = "enc.swiftest.dat sim.param['MU2KG'] = swiftest.MSun sim.param['TU2S'] = swiftest.YR2S @@ -36,11 +41,7 @@ for name, id in bodyid.items(): sim.add(name, idval=id) -sim.param['PL_IN'] = "pl.swiftest.in" -sim.param['TP_IN'] = "tp.swiftest.in" -sim.param['CB_IN'] = "cb.swiftest.in" -sim.param['BIN_OUT'] = "bin.swiftest.dat" -sim.param['ENC_OUT'] = "enc.swiftest.dat" +" sim.save("param.swiftest.in") sim.param['PL_IN'] = "pl.swifter.in" sim.param['TP_IN'] = "tp.swifter.in" diff --git a/python/swiftest/swiftest/io.py b/python/swiftest/swiftest/io.py index 14f137838..ceab9a74f 100644 --- a/python/swiftest/swiftest/io.py +++ b/python/swiftest/swiftest/io.py @@ -654,11 +654,12 @@ def swiftest_xr2infile(ds, param, framenum=-1): RSun = np.double(cb['Radius']) J2 = np.double(cb['J_2']) J4 = np.double(cb['J_4']) + cbid = int(0) if param['IN_TYPE'] == 'ASCII': # Swiftest Central body file cbfile = open(param['CB_IN'], 'w') - print(GMSun, file=cbfile) + print(0, file=cbfile) print(GMSun, file=cbfile) print(RSun, file=cbfile) print(J2, file=cbfile) @@ -687,9 +688,8 @@ def swiftest_xr2infile(ds, param, framenum=-1): elif param['IN_TYPE'] == 'REAL8': # Now make Swiftest files cbfile = FortranFile(param['CB_IN'], 'w') - MSun = np.double(1.0) - cbid = 0 cbfile.write_record(cbid) + MSun = np.double(1.0) cbfile.write_record(np.double(GMSun)) cbfile.write_record(np.double(rmin)) cbfile.write_record(np.double(J2)) diff --git a/src/io/io.f90 b/src/io/io.f90 index 12fe2cdab..8e8643ac0 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -665,6 +665,7 @@ module subroutine io_read_cb_in(self, param) is_ascii = (param%in_type == 'ASCII') if (is_ascii) then open(unit = iu, file = param%incbfile, status = 'old', form = 'FORMATTED', iostat = ierr) + read(iu, *, iostat = ierr) self%id read(iu, *, iostat = ierr) val self%Gmass = real(val, kind=DP) self%mass = real(val / param%GU, kind=DP) From 5c6df05e30b48f0dd17c5669c324828635aadbe1 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Mon, 12 Jul 2021 20:03:28 -0400 Subject: [PATCH 17/23] Fixed namespace collision between RMVS and SyMBA variable NTENC --- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 12 ++++++------ src/modules/rmvs_classes.f90 | 12 ++++++------ src/modules/symba.f90 | 8 ++++---- src/modules/symba_classes.f90 | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index d564f3b97..26f7005f5 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -461,9 +461,9 @@ "array([ 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104, 105, 106,\n", " 107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n", "Coordinates:\n", - " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" + " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" ], "text/plain": [ "\n", @@ -846,10 +846,10 @@ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", " id int64 4\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
  • " ], "text/plain": [ "\n", diff --git a/src/modules/rmvs_classes.f90 b/src/modules/rmvs_classes.f90 index 7b4ecc36d..7ea5ad2c2 100644 --- a/src/modules/rmvs_classes.f90 +++ b/src/modules/rmvs_classes.f90 @@ -8,12 +8,12 @@ module rmvs_classes implicit none public - integer(I4B), parameter :: NTENC = 10 - integer(I4B), parameter :: NTPHENC = 3 - integer(I4B), parameter :: NTPENC = NTENC * NTPHENC - real(DP), parameter :: RHSCALE = 3.5_DP - real(DP), parameter :: RHPSCALE = 1.0_DP - real(DP), parameter :: FACQDT = 2.0_DP + integer(I4B), private, parameter :: NTENC = 10 + integer(I4B), private, parameter :: NTPHENC = 3 + integer(I4B), private, parameter :: NTPENC = NTENC * NTPHENC + real(DP), private, parameter :: RHSCALE = 3.5_DP + real(DP), private, parameter :: RHPSCALE = 1.0_DP + real(DP), private, parameter :: FACQDT = 2.0_DP !******************************************************************************************************************************** ! rmvs_nbody_system class definitions and method interfaces diff --git a/src/modules/symba.f90 b/src/modules/symba.f90 index 209322ee1..41f2de81a 100644 --- a/src/modules/symba.f90 +++ b/src/modules/symba.f90 @@ -8,10 +8,10 @@ module symba use helio implicit none - integer(I4B), public, parameter :: NENMAX = 32767 - integer(I4B), public, parameter :: NTENC = 3 - real(DP), public, parameter :: RHSCALE = 6.5_DP - real(DP), public, parameter :: RSHELL = 0.48075_DP + integer(I4B), private, parameter :: NENMAX = 32767 + integer(I4B), private, parameter :: NTENC = 3 + real(DP), private, parameter :: RHSCALE = 6.5_DP + real(DP), private, parameter :: RSHELL = 0.48075_DP !******************************************************************************************************************************** ! symba_tp class definitions and method interfaces diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 26ca7df6e..2dad53567 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -8,10 +8,10 @@ module symba_classes use helio_classes, only : helio_cb, helio_pl, helio_tp, helio_nbody_system implicit none - integer(I4B), parameter :: NENMAX = 32767 - integer(I4B), parameter :: NTENC = 3 - real(DP), parameter :: RHSCALE = 6.5_DP - real(DP), parameter :: RSHELL = 0.48075_DP + !integer(I4B), parameter :: NENMAX = 32767 + !integer(I4B), parameter :: NTENC = 3 + !real(DP), parameter :: RHSCALE = 6.5_DP + !real(DP), parameter :: RSHELL = 0.48075_DP character(*), parameter :: PARTICLE_OUTFILE = 'particle.dat' integer(I4B), parameter :: PARTICLEUNIT = 44 !! File unit number for the binary particle info output file From 97d775feee5a0675978ed183b48fd64e2e9d248a Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 00:21:13 -0400 Subject: [PATCH 18/23] Fixed RMVS 1pl_1tp_encounter test case initial conditions --- .../1pl_1tp_encounter/cb.swiftest.in | Bin 64 -> 80 bytes .../1pl_1tp_encounter/init_cond.py | 87 ++++-------------- .../1pl_1tp_encounter/param.swifter.in | 6 +- .../1pl_1tp_encounter/param.swiftest.in | 2 +- .../1pl_1tp_encounter/pl.swifter.in | 4 +- .../swiftest_vs_swifter.ipynb | 8 +- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 16 ++-- 7 files changed, 36 insertions(+), 87 deletions(-) diff --git a/examples/rmvs_swifter_comparison/1pl_1tp_encounter/cb.swiftest.in b/examples/rmvs_swifter_comparison/1pl_1tp_encounter/cb.swiftest.in index 2386b53c8a2bcee968968e01db63bf30bc75c07a..96c7f920c5e7fef09dc566576eaaa5d9558f556a 100644 GIT binary patch delta 50 ocmZ<=5a3`y01$hEip&Eq9(&h@UONyMgqP|>Ijb)=*#}|+0HB!%$N&HU delta 34 lcmWG=m?)qk!*9$T#rI;0Ee8Vw0|>kNE@5oh<+2CF1^|Ql2W,\n", - " ]" + "[,\n", + " ]" ] }, "execution_count": 6, diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index 26f7005f5..3d3ffb629 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -461,9 +461,9 @@ "array([ 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104, 105, 106,\n", " 107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n", "Coordinates:\n", - " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" + " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" ], "text/plain": [ "\n", @@ -846,10 +846,10 @@ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", " id int64 4\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
  • " ], "text/plain": [ "\n", @@ -935,7 +935,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ8AAAElCAYAAAA7s++HAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACE+0lEQVR4nOydd3hUxfrHP7MlvfceCAm99w4KKGIBVOyI2K71Wq/157Vfe7ui2K6C2Dt2BRFBeicQICEhvfeyydb5/XEWDJiE9ASYz/OcZ3fPOTPznrPJ+e7MvPO+QkqJQqFQKBSdia6rDVAoFArFqYcSH4VCoVB0Okp8FAqFQtHpKPFRKBQKRaejxEehUCgUnY4SH4VCoVB0Okp8FF2GEOIRIcQHzvcxQohqIYS+q+1qCiHEJCHEga62A45vS2feUyHEaiHEtc73lwshfq13bIIQIsVpyxwhRKgQYo0QokoI8UJH26bonijxUbQaIUS6EGL6MfuuEkL82dK6pJSZUkovKaW9/SxsGUIIKYSIb+ocKeVaKWWfzrKpKY615djvo6vuqZTyQynlGfV2PQYsctryDXA9UAz4SCnv6kzbFN0HJT4KRTMRQhi62oYTlFhg7zGfk2QrVrir7+DkQYmPokMRQkQIIb4UQhQJIQ4JIf7ZyHk9nD0PQ71y3wohSoUQB4UQ19U7Vy+EeEAIkeocutkmhIh2HusrhFjhLHdACHFRvXJLhBCvCSF+cJbbJITo5Ty2xnnaLufw0MVCiKlCiGwhxL1CiHzgvcP76tUZLYT4ynl9JUKIRY1c3yNCiC+EEJ86294uhBhS73g/59BVuRBirxDivHrHZgkhkpzlcoQQdzv3H7FFCLEMiAG+c9p/Twvv6SNCiM+EEO8729krhBjZxPc6QwixXwhR4bxmUe/Ykd6vECIViKtn18fAAuAe5+fpQgidEOI+5/dZ4rQj4Ji/i2uEEJnAKuf+q4UQ+4QQZUKIX4QQsfXal0KIG5xDfWXO77y+fdc5y1Y57+vwevenwb9VIcRoIcRWIUSlEKJACPFiY/dG0UyklGpTW6s2IB2Yfsy+q4A/ne91wDbg34AL2kMoDTjTefwR4APn+x6ABAzOz38ArwNuwFCgCJjmPPYvIBHog/bQGwIEAp5AFrAQMADD0YZ3BjjLLQFKgdHO4x8Cn9SzXQLx9T5PBWzAM4Ar4O7cl+08rgd2AS8523YDJjZyrx4BrMCFgBG4GzjkfG8EDgIPOO/T6UAV0MdZNg+Y5HzvDwyvZ192Y99HC+/pI0AdMMt5XU8BGxu5liCgst613OG8T9ce+zfQiF1LgCfqfb4d2AhEOe/zm8DHx1zD+8577A7Mcd6vfs7v8f+A9cd8j98DfmiCXATMdB6bB+QAo9D+duLRemLH+1vdAMx3vvcCxnb1/9+JvnW5AWo7cTfnQ6UaKK+3mfhLfMYAmceUuR94z/n+ERoQHyAasAPe9co9BSxxvj8AzG7AnouBtcfsexN42Pl+CfBOvWOzgP31PjckPhbA7Zh9h8VnnPPBZmjGvXqEeg9z58MuD5jk3PIBXb3jHwOPON9nAv9AmyOhIVvqfR8Nik8z7ukjwMp6x/oDtY1cy5XHXIsAsmm9+OzDKYLOz+FoQm2odw1x9Y7/BFxzzL00AbH1vseJ9Y5/BtznfP8LcFsD13S8v9U1wKNAUFf/350smxp2U7SVOVJKv8MbcFO9Y7FAhHMoqVwIUY726z70OHVGAKVSyqp6+zKASOf7aCC1gXKxwJhj2rscCKt3Tn699ya0X7FNUSSlrGvkWDSQIaW0HaeOw2QdfiOldKA9sCOcW5Zz32HqX+8FaEKZIYT4Qwgxrpnt1ed49xT+fm/cRMNzLBHHXIus/7kVxAJf1/vO9qEJZf2/k6xjzn+l3vmlaALY1LUc/p6b+ttp6m/1GqA3sF8IsUUIcU6Lr1JxFGryTtGRZAGHpJQJLSyXCwQIIbzrPSxj0IZLDtfbC9jTQHt/SClntNbgBmhqUjwLiBFCGJopQNGH3wghdGjDTLmHjwkhdPUEKAZIBpBSbgFmCyGMwC1ov+SP1NVMW493T1tC3jHXIhqxp7lkAVdLKdcde0AI0cP5Vh5z/pNSyg9b2VavRvY3+rcqpUwBLnV+b+cDXwghAqWUNa2wQYFyOFB0LJuBSueEvbvQHAUGCiFGNVVISpkFrAeeEkK4CSEGo/3yPPyweQd4XAiRIDQGCyEC0cb5ewsh5gshjM5tlBCiXzPtLUAb62/J9eUBTwshPJ22Tmji/BFCiPOdvYnbATPaXMcmoAZtEt4ohJgKnAt8IoRwEdq6GV8ppRVtrqUx1+lG7W/GPW0JPwAD6l3LPzm6d9lS3gCePOw0IIQIFkLMPs759wshBjjP9xVCzGtmW+8AdwshRjj/duKd7Tb5tyqEuEIIEez8cVDurKvLlgWcDCjxUXQYUltfci7a5PYhtMn/dwDfZhS/FG28Pxf4Gm3eZoXz2Itov/5/RXsY/w9wd/6iPwO4xFkun7+cBZrDI8BS57DLRcc7ud71xaPNy2SjzTs1xnLn8TJgPnC+lNIqpbQA5wFnod2j14ErpZT7neXmA+lCiErgBuCKRup/Cvg/p/13N3C8qXvabKSUxWgT908DJUAC8LdeSwt4BfgW+FUIUYUmyGOaaP9rtO/1E+c92YN275pj++fAk8BHaE4d3wABzfhbnQnsFUJUO+29pInhWEUzEM7JNIVC0YEIIR5Bc2ZoTDgUilMK1fNRKBQKRaejxEehUCgUnY4adlMoFApFp6N6PgqFQqHodJT4KBQnOOKYFAZNnHckhUV3QGix9p7oajsUXYMSH8Uphfgrx83hTQohaup9ntSKOv+WWuKY41OFEA5n/VVCC3i6sJX2HxUsFBpMYaBQdHtUhAPFKYWUMpN6IXWEEBIYIqU82MFN50opo5zRAGajrZDfJKVMam4FjYS6UShOSFTPR6FwIoRwFUI8L4TIFFrY/DeEEO7OY0FCiO+dCzhLhRBrhZYK4G+pDJpqQ2p8g7bQtL8Q4mwhxA6hherPcq4HOmxPQ+kEDqd+KHe2N04ck8BPCDFA/JVWokAI8UAj1ztWCLHeeU27nJEVDh+7SgiR5uypHRJCXN7EPXtZCJHr3F4WQrg6jx1OSXGXEKJQCJHXWI9PCLFHCHFuvc9GIUSxEGJoU/dTceKixEeh+Itn0IJHDkWLWhCJFmIf4C60CAbBaMEmH0DTkvlo0Q3OlVqmzmebasApWHPRwv0nooXVudL5+WzgRiHEnGOKTUFLH3AmMNm5z8/Z3oZj6vcGVgI/owUAjQd+a8COSLQwOU8AAWgpHr50hrbxBP4LnCWl9AbGAzsbuaQHgbFo92wIWrqK/6t3PAwtSkAkWjif14QQ/g3U8z5HR26YBeRJKRtrV3GCo8RHoeBIcMzrgDuklIejP/8HLVQPaCH+w9HC9lullsK6JesUIoQWKbkYeBgtN8wBKeVqKWWilNIhpdyNlkphyjFlH5FS1kgpa5vRzjlAvpTyBSllnZSySkq5qYHzrgB+lFL+6Gx7BbAV7aEP4AAGCiHcpZR5Usq9DdQBWtTwx6SUhVLKIrS0A/PrHbc6j1ullD+ipeBoKA35B8AsIYSP8/N8YFkzrldxgqLER6HQCAY8gG3ir5D6Pzv3AzyHlsDsV+dw1H0trD/XmXYiQEo5VEr5CYAQYowQ4nehZc+sQIvdFnRM2ZakK2gsZcCxxALzxNEpBCYC4c5IzRc7bckTWubXvo3UE4GWmuEwGc59hyk5JuJ3g2kspJS5aPHhLhBC+KHFamtN0FPFCYISH4VCoxioRct6ejg/ka+U0gvA2YO4S0oZhxaA8k4hxDRn2bas1P4ILahmtJTSFy1iszjmHNnI+4ZoLGVAQ+ctq5+LSUrpKaV8GkBK+YszNUU4sB94u5F6ctGE7DAx/JUmoqUsReuRzQM2SClbk+5BcYKgxEeh4Ehyt7eBl4QQIaDNiwghznS+P0do4fcFf6U1OBxSv6WpGOrjjZbkrU4IMRq47DjnF6ENiTXW3vdAmBDidqczgLcQoqEI0R8A5wohzhRa+gA3p4NAlBAiVAhxnnPux4w2VNZY+oCP0SJpBwshgtDmyFq7lugbtNTnt6HNASlOYpT4KBR/cS/a0NpGoYXqX8lf8xMJzs/VwAbgdSnlauex46UyaIqbgMeElkrg32ipIhpFSmlCSwmwztne2GOOVwEz0Hpn+UAKcFoD9WShuXw/gCZoWcC/0J4JOjQHi1y0LKFTODpDbX2eQJsr2o3mQLHdua/FOOe0vgR6Al+1pg7FiYOK7aZQKLoNQoh/A71V6omTH7VoTaFQdAuEEAFo7tjzj3eu4sRHDbspFIouRwhxHdrQ309SyjXHO19x4qOG3RQKhULR6aiej0KhUCg6HTXn00yCgoJkjx49utoMhUKhOKHYtm1bsZQy+Nj9SnyaSY8ePdi6dWtXm6FQKBQnFEKIjIb2q2E3hUKhUHQ6SnwUCoVC0eko8VEoFApFp6PER6FQKBSdjhIfhUKhUHQ6SnwUCoVC0eko8VEoFApFp6PER6FQKBQNUlJSwsqVK3E4HO1etxIfhUKhUPyN0tJSlixZwvbt26mqqmr3+pX4KBQKheIoysvLWbp0KTabjSuvvBJfX992b0OJj0KhUCiOUFFRwZIlSzCbzcyfP5+wsLAOaUeJj0KhUCgAqKysZOnSpdTW1jJ//nwiIiI6rC0lPgqFQqGgurqa999/n+rqai6//HIiIyM7tD0lPgqFQnGKU1NTw9KlS6moqOCyyy4jJiamw9tU4qNQKBSnMCaTiffff5+ysjIuvfRSOitvmRIfhUKhOEWpra1l2bJlFBcXc8kllxAXF9dpbSvxUSgUilOQuro6PvjgAwoKCrj44ouJj4/v1PaV+CgUCsUphtls5sMPPyQvL4+LLrqI3r17d7oNSnwUCoXiFMJsNvPBBx+QnZ3NBRdcQN++fbvEDiU+CoVCcYpwuMeTnZ3NhRdeyIABA7rMFiU+CoVCcQpgsVj46KOPyMrK4oILLuhS4QElPgqFQnHSc1h4MjMzOf/88xk4cGBXm6TER6FQKE5mLBYLH3/8MRkZGcydO5dBgwZ1tUmAEh+FQqE4abFarXz88cccOnSIOXPmMHjw4K426QhKfBQKheIk5FjhGTJkSFebdBRKfBQKheIkw2q18sknn5CWlsbs2bMZOnRoV5v0N5T4KBQKxUmE1Wrl008/JTU1lfPOO49hw4Z1tUkNYuhqAxQKhULRPhzu8aSmpnLuuecyfPjwrjapUZT4KBQKxUnA4TmetLQ0zjvvvG4tPKDER6FQKE54DrtTHzp0iNmzZ3fbobb6KPFRKBSKE5jDC0jT09OZM2dOt3QuaAglPgqFQnGCclh4Di8g7W7u1E2hxEehUChOQMxm85GQOXPnzu1WC0ibgxIfhUKhOME4HJ06KyuL888/v9uEzGkJSnwUCoXiBOLYfDzdIUhoa+jURaZCiJlCiANCiINCiPsaOC6EEP91Ht8thBh+vLJCiAAhxAohRIrz1d+5f4YQYpsQItH5enq9MiOc+w862xMdfe0KhULRVg6nvj6cj+dEFR7oRPERQuiB14CzgP7ApUKI/secdhaQ4NyuBxY3o+x9wG9SygTgN+dngGLgXCnlIGABsKxeO4ud9R9ua2b7XalCoVC0P7W1tSxbtoycnBzmzZvX5fl42kpn9nxGAwellGlSSgvwCTD7mHNmA+9LjY2AnxAi/DhlZwNLne+XAnMApJQ7pJS5zv17ATchhKuzPh8p5QYppQTeP1xGoVAouiMmk4mlS5eSn5/PRRddRP/+x/5uP/HoTPGJBLLqfc527mvOOU2VDZVS5gE4X0MaaPsCYIeU0uwsl30cOwAQQlwvhNgqhNhaVFTUxKUpFApFx1BdXc2SJUsoKirikksuoW/fvl1tUrvQmeLT0LyKbOY5zSnbcKNCDACeAf7RAju0nVK+JaUcKaUcGRwc3JzmFAqFot2oqqpiyZIllJaWcvnll5OQkNDVJrUbnentlg1E1/scBeQ28xyXJsoWCCHCpZR5ziG1wsMnCSGigK+BK6WUqfXaiDqOHQqFQtGlVFRUsHTpUqqqqrjiiivo0aNHV5vUrnRmz2cLkCCE6CmEcAEuAb495pxvgSudXm9jgQrnUFpTZb9FcyjA+bocQAjhB/wA3C+lXHe4AWd9VUKIsU4vtysPl1EoFIruQHl5OUuWLKGmpob58+efdMIDndjzkVLahBC3AL8AeuBdKeVeIcQNzuNvAD8Cs4CDgAlY2FRZZ9VPA58JIa4BMoF5zv23APHAQ0KIh5z7zpBSFgI3AksAd+An56ZQKBRdTmlpKUuXLsVsNnPllVcSGdnglPQJj9AcvhTHY+TIkXLr1q1dbYZCoTiJKS4uZunSpdhsNq688krCw8O72qQ2I4TYJqUceex+FeFAoVAougGFhYUsXaqtGrnqqqsIDQ3tYos6FiU+CoVC0cXk5uaybNky9Ho9CxYs4FTwrlXio1AoFF1IZmYmH374IW5ubixYsICAgICuNqlTUOKjUCgUXURaWhoff/wx3t7eLFiwAF9f3642qdNQ4qNQKBRdQHJyMp9++imBgYHMnz8fb2/vrjapU1Hio1AoFJ3M3r17+fLLLwkNDWX+/Pl4eHh0tUmdjhIfhUKh6ER27tzJ8uXLiY6O5rLLLsPNza2rTeoSlPgoFApFJ7F582Z+/PFH4uLiuOSSS3Bxcelqk7oMJT4KhULRCaxbt44VK1bQp08fLrzwQoxGY1eb1KUo8VEoFIoORErJ6tWr+eOPPxgwYADnn38+er2+q83qcpT4KBQKRQfhcDj4+eef2bx5M8OGDePcc89Fp+vMeM7dFyU+CoVC0QHY7XaWL1/O7t27GTduHGeccQZaIH0FKPFRKBSKdsdqtfLFF19w4MABTj/9dCZNmqSE5xiU+CgUCkU7Yjab+fjjj0lPT2fWrFmMHj26q03qlijxUSgUinbCZDLxwQcfkJeXx9y5cxkyZEhXm9RtUeKjUCgU7UBlZSXLli2jtLSUiy++mL59+3a1Sd0aJT4KhULRRkpLS3n//fcxmUxcccUV9OzZs6tN6vYo8VEoFIo2UFBQwLJly7Db7SxYsOCkTXvd3ijxUSgUilaSmZnJRx99hNFoZOHChYSEhHS1SScMSnwUCoWiHg6zHXtZHbaSWmylZqTZhrRJpM2BtDvA+T6tPJuf8tfhpfdgdtAkDL+XUe5ehXA3oKu/eRjQuRnQeRnReRqVy7UTJT4KheKUQ1odWHKrsRXXYiutw156WGzqcFRb/15AJxAGgTDoQK8jmRz+sCYSpPdhlu94PGoMmIsrcNTakGZ7o+0KNz2GIHdtC3THGKy9GoLc0bmfWo/jU+tqFQrFKYm0ObBkV2FOrcCcWo45sxJsUjsoQO/riiHADbe+AZoYBLhhCHRD7++Gzt2A0P3VW1m3bh2rV+ymZ8+eXHLJJbi6uh7dll3iqLMha2046mw4arXNXmnRxK6kFkt6JbW7ikD+VU7nacQQ7I5LlDcu0dqm93c9aXtKSnwUCsVJh7RLLDlOsUkrx5JeibQ6QIAxzBOvsRG49vTFEOKOwd9N69Ecr04pWbFiBevXr2fAgAHMnTsXg+Hvj1ChF+g9jeDZdNRqaXVgK63VBKlY63lZC0xUb8yDP3MA0HkZ/xKjGG9corxPmh7SyXEVCoXilEc6JOa0Ckxb86ndV3pk+MsQ6oHnqDBc43xxjfNF59HyVAZ2u51vv/2WXbt2MWrUKM4666w2BwgVRh3GUE+MoZ5HX4fdgTXfhCWrEktmFZasKur2lx45bgh2x7WXH27xfrjG+6FzOzEf4yem1QqFQuHEVlaHaVsBNdsKsJeZEW56PIYE4xrvh2ucL3qvtiVss1gsfPHFFyQnJzN16lSmTJnSoUNhQq/DJdILl0gvGKvtc9TasGRXaWKUWYlpewE1G/NABy7RPrjG++HW2x+XKG+E/sQYpjuu+AghYppZV7mUsrKN9igUCsVxkVYHtUnF1GwtwHywHCS4xvvhe2YP3AcEIoztky+ntraWjz76iKysLM4++2xGjRrVLvW2FJ27AbcEf9wS/AHnHFZmFXUpZdQdLKdqVSZVv2UiXPVaryjBT5u/8u++Kbqb0/NZijYt1pScSmAJ8H472KRQKBQNYi2ooXpjHqYdRcg6G3o/V3ymxeAxPBRDQPs+aCsqKvjwww8pKSlh3rx5DBgwoF3rbwvCoDsyjOh7JjhMVupSyzGnlGuClFQCy1MxRnrhPiAQ9wGBGEI8upXzgpBSHv+sYwsJESalzO8Ae7otI0eOlFu3bu1qMxSKUxJrkYnKlZnU7i4CvcB9YBCeI0NxjfM7yhOtvSgsLOSDDz6grq6OSy65hLi4uHZvo6OQUmIrqaMuqYTaPcVYMqsAba5IE6IgjFFenSZEQohtUsqRx+5v7ZzPlcCzbTNJoVAomsZWWkflb5mYthcgDDq8p0TjNSlS8ybrINLT0/nkk08wGAxcffXVhIWFdVhbHYEQAmOQO8bJUXhPjsJeaaY2qYTaPSVUrcmmanU2el9XTYgGBuHSw6dDBPx4tFZ8ZgshTMAKKeWB9jRIoVAobBVmqlZlUrOlAHTgNSES76lRbXYeOB579uzh66+/xt/fnyuuuAI/P78Oba8z0Pu44jU2Aq+xEThMVmr3lVK7t4TqzflUr89F7+eKx9BgPIaF/M3zriNprficDwwD5goh4qWU17ajTQqF4hTFXmWhanUW1ZvyQILn6DB8TotG7+t6/MJtZOPGjfz8889ER0dz6aWX4uHh0eFtdjY6DyOeI0LxHBGKw2ynbl8Jph2FR3pExnBPPIaF4DEkuMPveavmfE5F1JyPQtFxSKudylVZVP+Zg7Q78Bgeis/pMe3uRNAQDoeDlStXsn79evr27csFF1yA0dhxw3rdEXuVBdPuIkw7i7BmVYEA1zhfPIaF4D4wqE1riRqb82mtw8FrgKeU8iohxBlSyl9bbdkJghIfhaJjqEstp/yrFGwldbgPCcZnegzG4M7pddhsNr755hv27NnTbotHT3SsRSZMO4sw7SzEXlIHBh3h945C7926Ic/GxKe1d9kCpDnfn94CI2YKIQ4IIQ4KIe5r4LgQQvzXeXy3EGL48coKIQKEECuEECnOV3/n/kAhxO9CiGohxKJj2lntrGunc1Nx0BWKTsZRZ6PsqxSK305ESgi6dhCBl/btNOGpq6vjgw8+YM+ePUybNo1Zs2YdJTzFtcVsyd9CQU1Bp9jTXTAGe+A7I5awu0cSfNMQfKbHtFp4mqK1fSkT4CuEMALNWoQqhNADrwEzgGxgixDiWyllUr3TzgISnNsYYDEw5jhl7wN+k1I+7RSl+4B7gTrgIWCgczuWy6WUqiujUHQBtUkllH1zEEeVBa/JkfhMj0Xn0j4LQ5tDZWUlH374IUVFRZw3+zw8Yz35Pu17ksuSOVB6gOSyZErqSo6c3y+gH5OjJjMlagoDggagEyd/70gIgWuMD64xPh1Sf2vFpxSoRROEdc0sMxo4KKVMAxBCfALMBuqLz2zgfamNBW4UQvgJIcKBHk2UnQ1MdZZfCqwG7pVS1gB/CiHiW3mNCoWinbFXWSj/LpXa3cUYwzwJurI/LlHenWpDfn4+S5ctxVRnIiMug2v2XINttw0AF50Lvfx6MTFyIn0C+tDTtycHSg+wJnsNbye+zZu73yTALYBJkZOYEj2FceHj8HLx6lT7TxZaJD5CCD/gJaAP8AFaRINrmlk8Esiq9zkbrXdzvHMij1M2VEqZByClzGvBENp7Qgg78CXwhGxg8ksIcT1wPUBMTHOjDCkUimORUmLaXkj592lIix2fM2LxnhKF0HduD2LLni18//X31FHHjqgdxIXFcaX/lfT2700f/z708O2BQXf0Y3Fi5ESuGXQN5XXlrMtdxx/Zf7AqaxXLU5dj0BkYGTqSS/pewrSYaZ16LSc6LRIfKWW5EOJptJ5IMTAY+KqZxRtaxXTsA7+xc5pTtiVcLqXMEUJ4o4nPfBoIDSSlfAt4CzSHgza0p1CcstirLJR+now5uQyXWB/8L0jAGNK5bsw11hoWf7+Yyl2VVLlUET4xnM/HfI6vq2+z6/Bz8+PsuLM5O+5sbA4bOwt3siZnDb9l/Mbtv9/O5f0u564Rd2HUn1qecq2lNcNu1wCHpJS/ANtaUC4biK73OQrIbeY5Lk2ULRBChDt7PeFA4fEMkVLmOF+rhBAfoQ0Jqrh0CkU7Y04rp+Tj/cg6O36ze+E5JrxTV9PbHDa+SvmKn379idiSWGSA5NbLbyUusG3hcgw6AyPDRjIybCS3DruVl7a9xLKkZSQWJfL8lOcJ9wpvpys4eWlNn7cMuEEI8bIQYqEQYlgzy20BEoQQPYUQLsAlwLfHnPMtcKXT620sUOEcUmuq7LfAAuf7BcDypowQQhiEEEHO90bgHGBPM69BoVA0A+mQVK7OoujtRHRuBkJuHorXuIhOEx4pJWuy1zDvm3n88u0vxJbE0qN/Dx65+ZE2C8+xGHVG7hl1Dy9OfZHUilQu+v4i/sz5s13bOBlp7Tqf0UAyMBQYIqV8pZnlZgEvA3rgXSnlk0KIGwCklG8ILdLdImAmmkfdwsMeaQ2Vde4PBD5D87rLBOZJKUudx9IBH7SeUzlwBpABrAGMzrpWAndKKRtPvI5a56NQNBeHyUrpZ8nU7S/FfXAQ/hckoHPtvNRh6RXpPLHpCXZk72Bq8VS8Td5Mnz6dCRMmdHgwzYzKDO5cfScpZSn8Y8g/uGHwDeh1nefF1x1pt0WmQojH0B7aO4GdUsqUdrGwm6PER6E4PpbsKko+3Ie90oLf2XF4jgvv1DD+q7NWc//a+/G0enJa0Wk4ah3MnTuXgQMbWm3RMdTaanly45MsT13O2PCxPDP5GQLcAjqt/fbEkpFBxbffEXTLza3+Hts7wkEoWmy3oUAvKeV1rbLqBEKJj0LROFJKajblUf5dGnpvFwIu69th60MawiEdvLn7TV7f+TrDXYbTL7MfAsGll17aZZ6qX6d8zZObnsTX1ZcXprzA0JChXWJHazHt2EH2TTeDw0HPr7/CGBHRqnraO8LBP4AdUsqnTwXhUSgUjeMw2yn99ADl36TiFu9HyK3DOlV4qi3V3P777by+83Vme8wm/mA8Hu4eXHvttV26RGJuwlw+mPUBrnpXFv68kA/3fdhltrSUyp9/IXPBVei8venx6SetFp6maO1A7LvAjUIIT+BDKeXO9jNJoVCcKFiLTJQsS8JWVKut3Zka3anebIcqDnHb77eRWZHJde7XUbq3lKjYKC6++OJuEZW6b0BfPj3nUx7880Ge3vw0Ukqu6H9FV5vVKFJKSt99j8LnnsN92DCiXluEIaBjhgxb2/P5J5pwGYD/tp85CoXiRMF8qIKixbtw1FgJumYgPqfHdKrw/JH1B5f9cBmVpkpuFDdSmlTKsGHDmD9/frcQnsN4u3jz4tQXmR4znWe2PMPXKV93tUkNIm028h97jMLnnsN75kxilrzXYcIDrRefVMANWC6lnNyO9igUihMA085Cit5JROdpJOSmobjF+3da2w7pYPGuxdyy6hZ6uvVkXuU88tLymDFjBueddx4GQ+d51jUXg87AM5OfYXzEeB7Z8Ai/pnevRACOmhqybr6Z8o8/IfDaa4h88QV0rh2bz6e139JetHA31wghnpNSjmpHmxQKRTdFSknVqiwqV2Tg0tOHoPn90Xl03or+aks1D/75IKuyVnFe8HkE7AugvK6cSy65hL59+3aaHa3BRe/CS1Nf4oaVN3Dv2nvxMHowMXJiV5uFtaCQrBtvwLz/AGGPPIz/JZd0Srut7fn0RnO3fgtY2H7mKBSK7oq0Oyj7IoXKFRl4DA0m+JpBnSo8xbXFLPh5AX9k/8EtkbfgsUMbWrv66qu7vfAcxsPowaJpi4j3i+eO3+9gW0FLgsS0P3UHkkm/+GIs6RlEL36904QHWi8+fYEdwN04A28qFIqTF0etjeL39mLaVoD36dH4X9wHYei8oKB51Xks/HkhWZVZ3BN8D3l/5hEcHMx1111HePiJFcrGx8WHN6a/QZhnGLf8dgtJJUnHL9QB1KxfT8Zll4HDQY8PluE1ZUqntt/avx4/tJw596DlzVEoFCcptrI6Ct/YhTmtAv8Le+N7Ro9OXTiaUZnBgp8XUFJTwg2GG0jelEz//v256qqr8PHpPJfu9iTQPZC3z3gbHxcfblhxA2nlaccv1I5UrVxJ1j9uwBgRQY9PP8Gtf/9ObR9aLz6PoTkbHAAc7WiPQqHoRliyqyh8fSf2CjNBVw/Ec2Rop7afXJbMgp8WYK+zc2nNpWTuz2TSpElceOGFuLi0f3bNziTMM4y3zngLndBx3a/XkV2V3SntVnz3Hdm33Y5r/37EfrAMYxf1HJslPkIIvRAiTwhxLYCUMltKudL5/m/psBUKxYlP7b4Sit7cjdDrCLlxCG7xfp3afmJRIgt/XoiP2Ycz88+koqiCCy+8kGnTph2V7vpEJtYnlrfOeIs6ex3X/XodhabjBuVvE2WffkbuPffiMWIEMf97F71v81NKtDfN+gadQTf3AL061hyFQtEdMO0opGRZEoYQD0JuHoox1LNT29+Sv4Vrf72WHqYejMochUFn4Oqrr+7UGG2dRW//3iyevpiSuhL+seIfVJgrOqSdkveWkP/ww3hOnkT0W2+i9+rc7/RYWvLzwQO4RwixVQjxrXNrMn2BQqE48ajekEvpZwdw7eFL8PWD0Ht37vDWmuw13LjiRoZVDiMhK4GI8Aiuv/56IjogxEt3YXDwYBadvoiMygxu+e0Wam217Va3lJKi116j8Jln8D7zTKJffRWdm1u71d9aWiI+49Ayig5Hy4FzeFMoFCcJlb9nUb48Fbe+AQQtHNCpqRAAfk7/mbtW3sWUkimEFYQxbNgwFixYgJeXV6fa0RWMDh/N05OeZlfRLu5Zcw82h63NdUopKXzueYpfXYTvnDlEvvA8opvMlbVEfHo2sLVvViaFQtElSCkp/+kQlb+k4z40mMAr+iGMnZuH5uuUr3nst8eYUTADnwofzjrrrG4bsaCjOKPHGdw/5n5WZ63miY1P0JqsA4eRDgf5jz5K6bvv4n/ZZYT/50lEN7qXzbZESpnRkYYoFIquQTok5d8cpGZzPp5jw/E7r1enxmgDTXhe/e1VphdPx8PgwUXzLyIu7tT8bXtp30spMhXxduLbBLkHccuwW1pch7TZyHvwQSqWf0vgddcSfOedneoe3xy6jwwqFIpOR9odlH6WTO2uIrynRuNzZmynP6S+Pfgty35axqTSSQQHBXPZZZcR0IEBLU8Ebh12KyV1Jby5+02C3YO5uO/FzS4rLRZy7v4XVb/+SvDttxN0wz860NLWo8RHoThFkVY7JR/up25/KT4ze+AzNbrTbfgh+QeWL1/O4JrB9O7Tm/Pnno9bN5gM72qEEDw09iFKakt4ctOTBLoHMj12+nHLOSwWcm6/g+pVqwi9/z4CFizoBGtbR4ud5YUQ53aEIQqFovNw1NkoencPdQdK8Zsb3yXC8/2e71n5xUqiaqKYPHUyl15yqRKeehh0Bp6b8hyDgwdz75p72ZK/pcnzHWYzObf+UxOeh/6vWwsPtC7CwZPtboVCoeg0HCYrRe8kYsmoIuCSPniN6fwV7l9u+JL1X63Hy+7FvEvmcfrU07vdnER3wN3gzqLTFxHlHcVtq24juSy5wfMcZjPZt9xK9R9/EPbIIwRcfnknW9pyWiM+6i9EoThBsddYKXo7EWteDYHz++ExJKRT25dSsuz7Zez+ZTfSVXL99dczsO/Jt3C0PfFz8+ON6W/gbnTnxhU3klude9RxR10d2TfdTM2ffxL2+GP4X9L8+aGupDXi03rfP4VC0WXYqy0Uv70ba1EtQQsG4N4vsFPbN5vNLF66mNStqVT6V3LXTXcRHdr5w30nIuFe4bwx/Q1q7bX8Y8U/KK0rBcBRW0vWjTdSs3494U88gf+8eV1safM5OQIkKRSKJrFXWSh6KxFbSR1BV/XHrXfnZR4FKC4u5r+L/0t+ej65kbn8+/p/E+Qd1Kk2nOgk+Cfw6umvkleTx9U/X01BSQZZN9yIaeMmwp/6D34XnN/VJrYIJT4KxUmOvcJM0Zu7sZfXEbRwQKemvAZISkrijTffoLSqlLReaTx1xVP4u3euDScLI0JHsHj6YkrLctly+RxMW7YQ8ewz+M2Z09WmtZjWuFoXtLsVCoWiQ7CVmyl6ezeOKitBVw/EtUfnRTG22+2sXLmSDRs2UO5WTmZ8Jm+d9xaB7p073HeyMdyrP4t/jEBmHOC9C/25cfJAui42detpcc9HSjmjIwxRKBTti620jqK3duOothJ0becKT2VlJUuWLGHDhg1k+mWS3CuZxecsJshdDbW1BXt1NVnXXYcu6SCGx//FpoFGrvr5Kg6UHuhq01qMGnZTKE5CbCW1mvCYbARfNwjXmM7L+JmWlsYbb7xBXn4eSZFJZERk8NbMtwj17NxEdCcb9qoqMq+5htrERCJfepG+F17NkplLMOqMXP3L1SQWJXa1iS1CiY9CcZJhLa6l6M3dSIud4OsG4RLl3SntOhwO1qxZw7Jly3B1d2Vr7FbyvfN564y3iPKO6hQbTlbslZVkXnMtdUn7iHr5JXzOOAOAnr49WXrWUnxcfLj212uPuxC1O9Eq8RFC3FnvfZ/2M0ehULQFa6FJEx67JOi6wbhEdk4qApPJxEcffcSqVatI6JfAqvBVFOgKeGPGG/TyUzko24K9ooLMq6+hbt8+ol55Be/pR4fZifSKZOlZSwn3DOfGlTfyZ86fXWRpy2iR+Agh/IQQ7wHzhBA3CSEmAiqNtkLRDbAWmih6azdISfD1g3AJ75xMlTk5Obz55pscOnSIaWdO42u3r8mty+W1aa/RP7B/p9hwsmIvLydz4dWYDxwg6r+v4H36aQ2eF+IRwnsz3yPON45bV93KiowVnWxpy2mR+Egpy6WUC4EngE3AJOCrjjBMoVA0H2tBjSY8AoKvH9wpaa+llGzatIl3330XgMuuvIw3y97kYMVBXj7tZYaHDu9wG05mbGVlZCy8GvPBg0QtehXv0xoWnsP4u/nzzpnvMDBwIHf/cTcf7vsQh3R0krUtp7VzPlPQXK7HAsr7TaFoAltxMea0Qzjq6jqkfmt+DUVvJYIQmvCEeHRIO/Wpra3l008/5aeffqJXr14svG4hTx94msTiRJ6b/BwTIid0uA0nM7ayMjIXXo0lNZWo117Da8qUZpXzcfHhzRlvMjFyIk9vfprrV1z/t3A83YXWplTwA+4F7gGuaTdrFIqTAHtlJaYtW6jZsBHTpo2YUw4eOaYPCsIYEYExMkJ7jYjAGBmJMSICl+hodO7uLWrLkltN8f8SQa8j+LpBGIM7XniysrL44osvqKqq4swzz2TE6BHc/cfdbMzbyJMTn2xW6H9F49hKS8m8aiGWjAyiXn8dr4ktE3IPoweLTl/Elylf8tyW5zj/2/O5e+TdXJBwQbcK3ipak6ZVCBEF9JVSrhRCPC2lbNa8jxBiJvAKoAfekVI+fcxx4Tw+CzABV0kptzdVVggRAHwK9ADSgYuklGVCiEDgC2AUsERKeUu9dkYASwB34EfgNnmcGzFy5Ei5devW5lym4hTDUVuLadt2TJs2UrNxE3V794LDgXBzw2PECDzGjsEYEoI1N1fbcnKw5mjvpdV6pB6dhwdBN99MwJXzEUbjcdu15FZT/E4iwqgj+LrBGIJaJlwtxeFwsH79en777Td8fX2ZN28e4RHhPPjng3yf9j0PjHmAS/te2qE2nOzYSko04cnKIvr11/AcP75N9eVU5/DwuofZlL+JCRETeGT8I4R5hrWTtc1DCLFNSjnyb/vbkiO8hQbogWS0YbpsYAtwqZQyqd45s4Bb0cRnDPCKlHJMU2WFEM8CpVLKp4UQ9wH+Usp7hRCewDBgIDDwGPHZDNwGbEQTn/9KKX9qyn4lPopjMW3fQfHixdRs3AhWKxgMuA8ZgufYsXiOHYPbkCHoXFwaLS8dDmzFxdhyc7Hk5FD5/Q9U//47Lr16EfZ/D+I5blyjZS051RS9k4jORU/w9YMwBHas8FRXV/P111+TmppK//79Oe+883B1deXJTU/y6YFPuW34bVw76NoOteFkx1ZcTMZVV2HNziH6jcV4jh3bLvU6pIPPDnzGi9texCAM3DP6Hmb3mt1pvaDGxAcpZYs34DW03gTAGc0sMw74pd7n+4H7jznnTTRROfz5ABDeVNnD5zjfhwMHjqnzKmBRvc/hwP56ny8F3jye/SNGjJAKhZRSmhL3yIzrrpNJffrKAxMmyvxnn5VVa9ZKe01Nm+uu/P13mTJ9hkzq01dm3Xa7tOTl/e0cc1alzH54vcx9apO0ltS2uc3jkZaWJp977jn52GOPyS1btkiHwyGllPKVba/IgUsGyhe2vtDhNpzsWPIL5MGzZsl9Q4fJ6o2bOqSNzMpMueCnBXLgkoHy5pU3y4KaguOWcTgcsqLY1KZ2ga2ygWdqa+d8LPwV4+104NdmlIkEsup9zkbr3RzvnMjjlA2VUuYBSCnzhBDHS1AS6Sx/bBt/QwhxPXA9QExMzHGqVZzs1CUnU/zqq1StWIne15eQu+/C/7LL0Hm03zyL99SpeI4bR8n//kfJm29R/ccfBN14I4FXLUC4uGDJqqLof4no3A3aUFtAx2X+dDgc/PHHH6xZs4aAgACuuOIKwsK0IZt397zL24lvM6/3PO4YfkeH2XAqYM3NJeOqhdiLi4l5+y08Rv69k9AeRHtH8+6Z7/Lx/o95edvLzF0+l1uG3cKsnrPwdT069JLZZCV5cwF7/8ylotDEwmcm4uLeWrlomNbWZgJ8hRBGoLlP5Yb6eMeO+TV2TnPKNpdm1yWlfAt4C7Rht1a2pzjBMR86RPGi16j88Ud0np4E3XILAVctQO/VMQs4da6uBN90E77nzabg6acoevFFKr76isCbH6Rmqw6dp1EbavPrOOEpLy/n66+/JiMjgyFDhjBr1ixcXV0B+Dz5c17a9hJn9TiLB8c82K0msU80LNnZZC64CntlJTHv/g/3oUM7tD2d0HF5v8uZGDmRf6/7N//Z9B+e3fIsEyImMLPHWQywjSRtQwkHtxViszoIjvFmwoUJCH37f8etFZ9SoBZt+G1dM8tkA/UzR0UBx/oANnaOSxNlC4QQ4c5eTzhQ2Aw76sf6aMgOhQJLdg7Fr79OxTffIFxdCbz2WgKuXojBv3PSAbhERRK9aBHVa9dS8NJSqlbXIvRWAq8b3aHCs2fPHr777juklMydO5chQ4YcOfbzoZ95fMPjTI6azJOTnkSv03eYHSc7lvR0Mq5aiKO2lpj33sN94IBOazvWJ5YlM5ewr3QfP+37leRNBez4vpyM2r04DFYCBhmYesYwInsGdJgNLRIfIYQf8BLQB/gAeJ/mu1pvARKEED2BHOAS4LJjzvkWuEUI8QnasFqFU1SKmij7LbAAeNr5urwpI5z1VQkhxqItlL0SeLWZ16A4BZA2GyXvvkfxq6+CEATMv4LA667DENQ1EZkN4QNxG7AQqKXqp/9gPRRBzLv/Q+/dvjHbzGYzP/74I7t27SIqKorzzz+fgIC/Hj5rstdw/9r7GR46nBemvIBRd3yPPEXDmFNTybxqIdJmI3bpEtz69u3U9qWU5CaXk/2nxHPHUAbbHHhF6SmIPcAvus8otBXw2gZvpuVO46weZzE6fDQGXfsOu7XY280Zy60HUAwMBoqllN81s+ws4GU0d+l3pZRPCiFuAJBSvuF0tV4EzEQb2lsopdzaWFnn/kDgM7Thv0xgnpSy1HksHfBB6zmVozlHJAkhRvKXq/VPwK3yODdCebudGpjT0si9/37qdu3G+8wzCb3/PoxhneuaWp+6A6UUL9uHMciNoGsHYdq8juzbbsO9f3+i//dOuw39ZWVl8dVXX1FeXs7kyZOZPHkyev1fvZqt+Vu5YeUN9PLrxf/O+B9eLp0TM+5kpC45mcyFV4MQxL73Lq4JCZ3Wdk2Fmf0b8ti3Lo+KolpcPQz0HhPGgIkRBDrjANocNjblbeLHQz+yKnMVdbY6Vl20Cn+31vX4283V2unafEhKubhVlpygKPE5uZF2O6XvL6Po5ZfRubkR+u+H8Jk1q0vnM2qTSij5cB/GME+Crh6I3lPraVSuWEHOHXfiPmgQ0W+/jd6r9aF0HA4Ha9euZfXq1fj4+HDBBRf8zblmb8lervnlGkI9Qlkyc0mrH0IKqEtKIvPqaxAuLsQsWYJrXM8Ob9Nhd5Cxt5SkP3PJ2FOCdEgiEvzoPzGCXsOCMbg0PnRqtptJKkliWMiwVrffnuJzP9qw1+/ALmCnlHJHqy07QVDic/Jiycwk9/4HqN22Da/TTiP8sUcxBAd3qU2mxCJKPz6AMdKL4KsHojvG06jyl1/JufNO3IcNJebNN9F5tlyAysrK+Prrr8nMzGTQoEGcffbZuLkdPZeUVp7GVT9fhYfRg6Uzl6qcPG2gNjGRzGuuRefpSeyS93CJje3Q9iqKTOxbl8e+DXmYKiy4+7jQb1w4/caH4xfa8ZEwDtOui0yFEKPRFn0OBYZIKV9ps4XdHCU+Jx/S4aDs448pfP4FhMFA6AMP4Dun8xbfNYZpRyGlnx3AJcaHoIUD0Lk1PNZe+dNP5Nx1Nx4jRhD95hvNdvmWUpKYmMgPP/yAlJJzzjmHwYMH/+28nOocrvzpShzSwdKZS4nxUcsNWotp+w6yrr8evZ8fMUuW4BLV4OqONmOz2EndUcS+9XnkHChDCIgdGEi/CRHEDgpEr+/8FG6NiU+LZ5CEEI+hzbvsROv1rG6zdQpFJ2PNySH3wf/DtHEjnhMmEP7kE106t3OYmq35lH2ZgmtPXwIXDEDn2viQiM9ZZyFtdnLvvZesm24mevHrx40NV1NTww8//EBSUhJRUVFccMEF+DfgvVdkKuK6X6+jzlbHezPfU8LTBqrXrSP7llsxhoQQs+Q9jOHh7Vq/lJKizCr2rcsjeUsBllobPkFujDmvJ33HReDl79qu7bUXLRYfKeW/hRD/RouIfYEQopeU8rr2N02h6Bgqvv+B/IcfBikJe/RR/C6a1+W9HYDqTXmUf30Q197+BM3vhzAe343Z99xzQDrIvfc+sm++majXX0fn1rAb9oEDB/j222+pra1l2rRpjB8//iingsOU1ZVx3a/XUVJbwttnvE1v/95tvrZTlcoVK8i98y5kXE88Hn24XYWnrtrKgU357FufR0lONXqjjl7Dg+k3PoLIBD+Eruv/ppuiLYFFrwU8gY/UnI/iRMBhsVD49NOUffQx7sOHE/Hssx02/NFSqtbmUPFDGm59Awi8vB/C2LLhkfKvvyHvgQfwnDiRqEWvonP969duXV0dv/zyCzt27CAkJITzzz//SKSCv9lhqeKaX64hrSKNxdMXMypsVJuu61Sm/OtvyH3wQUoG9WW3p5G6mmqGzTyXSZcuwNjID4Tj4XBIsveVkrQuj0O7i3DYJCGx3vSbEEHCyBBcPbqf+3u7Dbs5+SdaiB0DWqTpyW2wTaHocKy5uWTffgd1u3cTsHAhIXfe0azI0R2NlJLKFRlUrcrCfVAQARf3QRhaPi7vN3cO2G3k/d9DZP/zn0S9+io6FxcOHTrEN998Q2VlJRMnTmTq1KkYDA3/25usJm7+7WZSylN45bRXlPC0gdL3l5H57DPsH9qHHLuZ8PAehPTsxY6fv+PQjq2cecNtRPUf2Oz6ygtM7N+Qx4FN+VSXmXHzNDJwciT9xkcQFHViur23tufzDyAB+P5UmfNRPZ8Tl+q1f5L7r38hrVbCn/oPPmec0dUmASAdkvJvU6nZmIfnqDD85sa3eaik7NPPyH/4YTzOPpt9M6azceNGAgICmDNnTpPxCS12C7f8dgub8jfx3OTnOKNH97hHJxpSSooXLyZx6bsk9YzAptcx/qIrGHnOXHR6PVlJifzyxitUFBYwfOa5TLz0SoyuDfeCLHU2UrcXsm99HnkHKxACovsH0m98OD0HB6FvYe+4q2hvb7eJaIs3L0XL63PS/0RS4nPiIe12il9fTPHrr+OakEDUf1/BpUePrjYLAGl3UPp5MrU7i/CaEoXvzB7tNu+099VF/JKWSqWvL6NGjWLGjBm4NJHaweqwcvfqu1mVtYrHJzzOnPg57WLHqYaUkswnn2Td2pXk+XkRGhfPzJvuICj6aJdqa10daz5aws5fvscvLJwzb7ydqL4DjtSRd7CcfevzOLi9CJvZjl+oB33HhdFnTHi3dR5oivYedusFlKEF3Sxri2EKRUdgKysj9+5/UbNuHb6zZxP2yMMtzhLaUTgsdko/2k/d/lJ8ZvbAZ2r08Qs1A6vVyh9//MG60hI8fHyYsno1I0aPblJ4HNLBQ+seYlXWKu4ffb8SnlYi7XY233UbmzMPYvP3ZsJFlzN69jx0DTh0GN3cmHb1DfQeM56fF7/Cp4/cx6DTz8Y37DRStpRSUVSL0U1P75Eh9B0fQVicT7dwiGlvWis+WVLKVc0M5KlQdCq1u3eTfdvt2EtKCHvsUfzmdQ9vNgBHnY3iJXuxZFTiNzcerzHt4/2UlZXF8uXLKS4uZujQocw47TSKDqaSe/8DGCMjca8XHPQwUkqe2PgEP6T9wG3Db+OyfseGWlQ0B1NJCT/ceQuZdVUE+Plz9r+fJKRH3HHLhcUPYPxF/8eGL5aR+Nv3CN2fRPS9kOlXjSFuWAjGJtzsTwZaKz4zhRDJaFGtM9AcEBSKLqfsk0/Jf/JJjCEhxH70UadGCj4e9ioLxe/uwVpoIuDSvngMbnsUBYvFwu+//86GDRvw8fHhiiuuID4+HgDXRa+SPu8ism6+hZ6ffYoxIuJIOSklL2x9gc+TP+faQdeqLKStxFpRyUe3XEOl3crQ+P5Mfewp9I04dMDhYbUK9m/I4+C2QqxmOz5B0xk0eDSHtn1K7r53SRgJBpfZnXgVXUNrxccPuBe4B83lWqHoUqTVSv5//kP5x5/gOWUykc88g97Pr6vNOoKtrI7i/+3BXmEmaMEA3Hq3PT5aeno6y5cvp6ysjJEjRzJ9+vSjwuMY/P2JfmMx6ZdcStaNNxH74YdH4sC9sesNliYt5dK+l/LPYeq3Y2uwFhbyx03XUaG3c/q40xh2x92NnltZXMuBTfns35BHZXEdRlc98SNC6DsunPB4X4QQWC6fzM+vv8zq99+hOCuDadfchKEbeGR2FG1Z59NXSrlSCPG0lPK+9jete6EcDrovtrIycm67HdPmzQReew3Bd9yBaGCsvauwFpoo/l8iDrODoIUDcI31aVN9ZrOZlStXsmXLFvz9/TnvvPPo2bPxAJXVa/8k64Yb8Jo8mahFr/K/pPd4ZfsrzO41m8cmPIZOnBheU90Jc2oqaddfzwp/F4Kje3DJi6//bWjXUmvj4PZCDmzMJzelHIDIPv70GxfW6LCadDhY/8VHbPzyEyL79ue8Ox/Aw9evE66o42iTt5sQQo+WhO0hKeU7HWBft0eJT/ekLjmZ7JtuxlZYSPgTj+N73nldbdJRmA9VUPx+EkIvCLpmEC7hrY9ADZCamsq3335LRUUFY8eO5fTTT2/SoeAwpR9+SMHjT5B33mhuG7CdWT1n8Z+J/1HJ4FqBaetWsm6+haRAL9K83Zn/zCtH5ngOLwLdvzGftJ1F2K0O/EI96DMmjN5jQvEJbJ7Ty/71a/jl9Zfx8PNjzr8eIji246NfdxRt8naTUtqFEHvQvNwUim5B1W+/kfuve7QowR8sw72B4JhdiWlXIaWfJWMIcCPoqgEYmvngaYiamhp+/fVXdu3aRWBgIFdffXWT63aOJeDyy0nc9jPh327mVt9BXD1fZSFtDZU//0zuPfdijo4k3dfIwMnTCOkRR0lONfs35pO8OR9ThQVXDwP9xoXTZ1wYoT1a7q3Wd/xk/ELDWf7c43z80L+YdevdxI8a20FX1TU0e9hNCLEOGAvs4K+001JKefLPjKF6Pt0JKSUlb75F0Suv4DZgAFGvLcIY2n1C/Uspqfojm8qf03Hp6UPQ/P7oWhn2RErJrl27+OWXXzCbzYwfP54pU6ZgbOFcwKf7P+U/Gx7nue/8iE6uIOadd/AcO6ZVNp2qlCxZQuEzz+I+dCg7BsWTtT+JMRc+THpiLcVZ1eh0gthBgfQZG0aPge2zCLS6tITlzz9BftpBJl48n9Fzuo/nZnNp8yJTIYSjgd1SSnlK/HxS4tM9cNTWkvfg/1H544/4nHMO4U883mggza5A2iXl3x6kZlM+7kOCCZjXu1XhcgCKi4v5/vvvSU9PJzo6mnPPPZeQkJAW1/Nl8pc8suERpkZN5bkRj5JzxZXYiorp8cnHuDYxV6TQkA4Hhc88Q+nS93GfcRbZ489i0zevYHCfiMFtNCGx3vQeE0bvUaG4ex9/CLSlWC1mfn3jv+xf9wf9Jk7ljH/8E0Mzhlq7C+0hPg1mPpJSZrTRthMCJT5djzU/n+ybb6EuKYngO+8g8Npru9WvQIfZpi0ePVCG99RofM6IbVW4HJvNxrp161izZg0Gg4EZM2YwfPhwdLqWi9jyg8t5aN1DjI8cz39P+y8uehcs2dmkz7sInZcXsR9+gLEVgnaq4DCbyfnXvWRuyaB0/CXkWIIxlbyPEFbGnP8Q/SZE4x/Wtnm85iClZNPXn7Hu02WExffmvDsfwDswqMPbbQ9aLT5CiOYOLJdLKStbY9yJgBKfrqU2cQ/ZN92Eo6aGiOefx/v007rapKOwV5opXrIXa34NfrNbv3g0IyOD7777juLiYgYMGMDMmTPx9vZuVV3fp33PA2sfYEz4GF49/VXcDH/1EGt37ybjqoW4REURu+x99L6+rWrjZEVKSeHeHLa/8AXZxGBx9cPF3YBfUBqZu7/g7H/eQ98JnR9POWXzen5a9CI6g55p19xEvwlTOt2GltIW8fkdkEBTP+EksERK+X6brOzGKPHpOip//oXc++7DEBhI1OLXcevdvfLLWPNrKH5vL45aKwGX98O9T0CL6zCZTKxcuZLt27fj6+vLOeecQ0JCQqtt+jn9Z+5dcy8jQkfw2rTXcDf83dmhZv16sv5xA24DBxLzv3eanQn1ZKaqtI7kzfkcWJNBWakd4bATGQEDzh1CeLw77//rRvzCIrjk0We6rNddlp/LT4teIC/lAH3GT2b6NTfh5tV9I1u3a2DRUxElPp2PlJKSt96m6KWXcB86lKjXFmEIDOxqs46i7mAZJcv2IVz0BF01AJfIlj0EHA4HO3bs4LfffqO2tpZx48YxderUZrlPN8bKjJXc/cfdDAkewuLpi/EwNi4qlb/8Ss4dd+A5YQLRry1CnEBzCe1FXY2V1O2FJG8uOLIex7fyEBG1+xn+fwvwG6GlPlj70RI2L/+Cy598kbD4Fv4AqqsAnRFc2kfgHXY7m7/5nA1ffoyHrx8zb7yD2MFD26Xu9kaJTxtR4tO5OCwW8v/9MBXffIPP2WcT/p8nj0qQ1tVIKalZn0v5D2kYgj0IWjgAg1/LHB9ycnL48ccfycnJISYmhlmzZjWa5K25/Jr+K/euuZcBQQN4c8abeBqPPx9R9vnn5D/0b3xmzSLiuWe71QLdjsJmtZORWMKBTflk7C3BYZP4hboTYTqA74p3CByaQORLL2JwphivKMznvTtuoM+4SZx1y10NV+pwQGU2FCdDccrRr9UF4O4P87+BiKHtdh35qSn8uOgFynKzGX7WeUy8bAFGl+7zfwLtH9VaoegwbGVlZN96K7VbtxF06y0E3XRTt3IskFYHZV+nYNpeiFu/AAIu7oPOrfn/SiaTid9++41t27bh5eXF3LlzGTx4cJuv8fu073nwzwcZHDSY16e/3izhAfCfNw97eTlFL7yIzteHsH//u1vd7/bCYXeQc6Cc5C35pO0owlJnx8PHhUFToujV25W65x6gbus2Aq66ipC770LUi9G25sMlCL2eiZcuOLpSKWHNc7DvWyg+CLbav465+UJQH4ifAYFxsPU9WDYHFnwHYYPa5ZrCeiUw/+mXWfvRUrb/9C0ZiTs565a7CO3Z/ZdkKvFRdCvMaWlk3XAjtvx8Il54Ht+zz+5qk47CVmGmZFkS1uxqvKfF4DMtptkebYeH2FauXEldXR1jx45l6tSpR8Vjay1fp3zNw+sfZmTYSBadvqjJobaGCLruOuzl5ZT+710M/v4E//PkiPcmpaQgvZKUzQWkbCukttKCi5ueuOEh9B4ZSmRff8x795B96/XYy8uJeO45fM8956g6svftIXnjn4y78LKjPcykhBX/hvX/hdiJMOoaCEqAwAQI6g2eQVBfxAecD0vOgaXnwVXfQ2j7BL01urpx+sJ/EDdsJD+/8QofPXgX4+ddxqjZF6DrxguJ1bBbM1HDbh1PzYYNZN92O8JoJGrRq3gMG9bVJh2FOb2Ckg/2IS0OAi7ujfuA5ru65uTk8MMPP5Cbm0tsbCyzZs0itJ0Wxn524DMe3/g44yPG8/JpLzfoXNAcpJTkPfQQFV98SegD9xNw5ZXtYl9XUJpXQ8qWApI351NZXIfeoKPHoEASRocSOzAQg1F7KJd/9TX5jzyCISiIqEWv4ta//1H1SIeDDx+8k5qKcq5+6Y2js47+8Sz8/iSMvAbOfuFooWmMklRNgOwWTYBC+rXnZVNbVcnKd14neeOfhPToxWkLrmtRuu6OQM35tBElPh1L2Wefkf/Y47j27EHU4jdwiYrsapOOIKWkZlMe5d+mYQhwI3B+P4yhzRvSqq6uZtWqVWzfvh0vLy/OOOMMBg0a1G7DWsuSlvHslmeZGjWV56c+j6u+beP90mYj5447qVqxgvCnn8Jvzpx2sbMzqCyuJWVrASlbCynJrkYIiOoXQMLIUOKGBePq/tdAj8NiofCZZyn78EM8xo0l8sW/5nfqs/eP3/j59Zc465a76D+pnnv/htfhl/th8CUwZzG0ZA1WSSq8NwukHRZ8DyF923LZf0NKyYENa1nzwXtUlRTRe8wEJl+xEN+Qts0nthYlPm1EiU/HIO12Cp9/gdL33sNz0iQiX3oRfTdyG5U2B+XLU6nZko9bH38CLumLzv34o9VWq5WNGzeydu1abDYbY8aMYcqUKe0yxHaYdxLf4ZXtrzAjdgbPTHoGo759wu87LBay/vEPTJu3EPXqf/E+/fR2qbcjqCk3c3BbISlbCyg4pC0zDIvzIX5kKAkjQ/Hw+bv3Xt3+/eTeex/mAwcIWLiQkLvuPGp+58h51dUsufsmvAODuOzx5xGHBWbbUvjun9DvPLjwPdC3YvaiOAWWnK0N3V31AwS3//IBq7mOrd9/zeblXyDtdkacPYfRcy7CtZNd6pX4tBElPu2Po6aGnH/dQ/WqVfhffjmh99/X4EOgq7BXmin5YB+WzCq8T4vGZ8bxIxZIKUlKSmLFihWUl5fTp08fZsyYQVBQ+61Gl1KyeNdiFu9azKyes3hy4pMYdO173+zVNWQuXEjdvn2E3ncf/pdf1m2cEOqqraTu0AQnJ7kcJARFe5EwMpT4ESH4BDU87ChtNkreeYei115H7+dL+GOP4X1aw4uVpZR8/8qzHNy8nksff56wXs41V4lfwJfXQvw0uORjMLTBNb3ogDYEJ3SaAAXFt76uJqgqLebPj98nac0qPHz9mHjJlQyYOq3T5oOU+LQRJT7tizU/n6wbb8J84ACh999PwPwrutqko6hLLaf0k/1Isx3/eX3wGHR88cjNzeXnn38mMzOTkJAQZs6cSVzc8dMptwQpJS9vf5l397zLnPg5PDLukQ6LTm2vqiL3X/dQvXo1vuefT9jD/+4yd3dzrY1DO4tI2VpI9r5SHA6JX6gHCSNDSBgVetwQN+a0NHLvvY+6xER8Zs0i9KH/a3CY7TB7fl/BL2+8wsRLrmTM3Iu0nft/gE/nQ8xYuPyL9lmzU7hf6wHpjZoABXacl1r+wWR+X/o2ucn7CO4Rx2lXXkv0gI6PBK/Ep40o8Wk/avfsPRIqJ/LFF/Ca0n1ChEi7pHJlBlWrszAEuRN4eT+Mx3mwVVZWsmrVKnbu3ImHhwenn356q2OxNWmblDy75Vk+2PcBF/e5mAfGPNDhieCkw0HxokUUv74Yt0GDiHr1vxjbuBapuVjqbBzaVczBbYVkJmlrcbwD3IgfoQlOULTXcXtj0uGg9P33KXrpZXTu7oQ9/G98zjqryTJleTksu/c2QnvFM++hJ7UeQuoq+OhiCB0IVy4Ht7YlBDyKgiRYeg7oXWHhDxDQvj9Y6nNkPujD96gqLiJuxGjGzr2Y8IQ+HdamEp82osSnfahauZKcf92D3t+P6MVv4Nan+4TKsZXVUfrJASwZlXiMDMXvvF7oXBrvVVgsFjZs2MCff/6Jw+Fg7NixTJo0qV3ndQ5jtVt5ZMMjfJv6LVf0u4J7Rt3TqcNgVStXknvPvQh3d6JeeRmPkX97lrQLVrOd9ERNcDL2lGC3OvD0cyV+RAjxI0II7dn83DiWrCzy7n8A09ateJ12GuGPPYohOLjJMnabjU/+/S/K8/OY/+yr+AQFQ8YG+OB88O+peah5tDx80nHJ3wNLzwWjB1z+Wbu5YTeG1WJm2/ffsO37r6mrqSZ6wGBGz5lH7KCh7f53pcSnjSjxaRtSSkrffZfC51/AbdAgol9bdNwHQWdiSiym7MsUkBL/ufF4DG080rPdbmf79u388ccfVFdX069fP2bMmEFAQAc8lIBqSzV3rr6TDXkbuGXoLVw/+PoumX8xp6aSffMtWLKzCX3gfvwvvbRd7LBa7GTuKeHg9kLSdxdjszjw8HGh1/AQ4keGEB7n26Lo4FJKyj/9jIJnn0XodIQ++CC+c2Y3y9a1Hy9l8zefc+6d99N7zATI3aGty/EKgYU/aa8dRX4ifHAhmKtg7mLo3/Gp0iy1Jnav/JmtP3xDTVkpoXEJjJkzj/hRY/9ysGgjSnzaiBKf1iMtFvIee4yKL77Ee+ZMIp5+qtvk4HFY7FR8n0bN5nyM0d4EXtKn0Yyjh50JfvvtN0pLS4mJiWH69OktyijaUgpNhdz8280cLDvIw+MfZk78nA5rqzm01zyQ1aKFt0ndXkh6oiY47t5G4oaFkDAihPAEP3QtTEchpaRmzRqKFr1GXWIinuPHEf7kkxjDmxdhPHPPbj5/4kEGTp3BmTf8E3K2aWLg4gVX/wS+US2+zhZTmQefzYfsLTDpbjjtwZa5cbcSm9VK0prf2LL8S8oL8giIiGLU7AvpN3Eq+jY6AXUL8RFCzAReAfTAO1LKp485LpzHZwEm4Cop5famygohAoBPgR5AOnCRlLLMeex+4BrADvxTSvmLc/9qIBw4HAvjDCllYVO2K/FpHfaKCrJvux3Txo0E3vAPgv/5z3b7RdVWrPk1lHy8H1uBCe8pUVr+HX3Dth06dIiVK1eSk5NDcHAw06dPp3fv3h3aA0krT+OGlTdQYa7gxakvMiFyQoe11RKOmgcaPJio/77SrHmgw4KjDakdLTjxw4OJSPBD18j9b9IeKalZu1YTnd27MUZGEnTTTfieP7fZ309tdRXv/+sWjK5uXPH0y7jkboJPLteG2K5c3qHzMH/DZoYf7oQdH0DvmXD+W1qonk7A4bCTvHEdm7/5nKKMQ3gHBjPy3LkMmnZmq2PGdbn4CCH0QDIwA8gGtgCXSimT6p0zC7gVTXzGAK9IKcc0VVYI8SxQKqV8WghxH+AvpbxXCNEf+BgYDUQAK4HeUkq7U3zullI2W02U+LQcc9ohsm+8EUtuLuGPP9ZtFixqi0bzKf8+DZ2bnoCL++CW0LDnU35+PitXruTgwYP4+Phw2mmnMWTIkHZ3JjiW7QXbuXXVrbjoXXht2mv0D+x//EKdzJF5IFdXAq66Cv+LL0Lv53fUOZY6Gxl7SkjdXtSuggPO7/HPdRQtepW6XbsxRkQQeOMN+M2e3aLo3FJKvnvxKVK3beayJ54ntG6v5k4dGA9XfAU+rcvN1CakhC3vwM/3aXNNl36she7ptOYlh3ZuZfPXn1F46CDXLX4fd6/W5ZXqDoFFRwMHpZRpToM+AWYDSfXOmQ28LzVF3CiE8BNChKP1ahorOxuY6iy/FFgN3Ovc/4mU0gwcEkIcdNqwoQOvUeGket06cu64E6HXE7vkPTxGjOhqkwAtNlv5VynUHSjDtbc/AfN6o28g9XFpaSmrV69m9+7duLm5MWPGDEaPHo3R2D4LOZtiRcYK7ltzHxFeEbwx4w0ivbpPtIf6eE+fTo/PP6Pgyf9Q9NJLFL/xBr5zZuN18RXkVniSur2QzKRS7FZNcPqMDSd+RIgmOK3I8HoYKSU169ZTvGgRtTt3YogIJ+zRR/GbO6dVKSESV/1Kyub1TLrsKkLL/oTv74DIkdrEv3vj7tgdihAw+jot/M5nV8Lbp8MF70DvMzuneZuZOMsO4ny/pzK2HHdHFdA68WmMzhSfSCCr3udstN7N8c6JPE7ZUCllHoCUMk8IcXhGMBLY2EBdh3lPCGEHvgSekA10AYUQ1wPXAx06rn+yUfrhhxT85ylc4+KIWry4W4TKkVJSsyWfih8OgUPie24cXuMi/jaRXV5ezpo1a9ixYwd6vZ4JEyYwceJE3N1bFy+tpXyQ9AHPbnmWIcFDePX0V/Fz8+uUdluLa69exLz7Pyp27Sfp/ZXs3CspffEgUmfEw0PQf0IE8SNCCOvVNsEBsBUXU7NpE2UffEjtjh0YwsMJe+QR/M6f2+o8RKW52fy+9C1iBgxmVEAmfPcoxE+Hi94Hl45Pj31cekyE61drQ4AfXQyn/x9Muqt5ceRag7UWti2BP1+G6nyIGYfPnNfBu/17f50pPg3drWMf+I2d05yyLWnvcilljhDCG0185gN/y8IqpXwLeAu0YbfjtHfKI61WCp56irKPPsZr6lQinn8evVfX/wPbSuso+yoF88FyXON88b8g4W9OBRUVFaxdu5bt27cjhGDUqFFMnDgRH592XM/RBA7p4MWtL7I0aSnTYqbx9KSnj0p73R2pqTBzaFcxaTsKyTlQjsPRH684Iwn6fHw3fYlX9m7c0vrg4boAYmdBCwXCVlaGadNmTJs3U7N5E5aDqQAYwsIIe/jf+F5wAbo2JL+z26z8+OrzGIwuzBxkQ/z2KAy8UIvV1pbIBe2NXwxc/Qt8eyuselzzipvxGPjHtl8bFhNsfRfWvQI1hVqU7gvehh6TOkzoOlN8soHoep+jgNxmnuPSRNkCIUS4s9cTDhx2HGi0PSlljvO1SgjxEdpw3EmbArwzsFdUkH377Zg2bCTgmqsJufPOLk9KJh2Smg25VPycDjqB39x4PEeHHTUJXVVVxdq1a9m2bRtSSoYPH86kSZPw9e2cCV6ACnMF/7fu/1idtZpL+17KvaPu7bCoBW2loqiWtJ1FHNpZRF5aBUjwDXFn6Bkx9BoWTHCMN0IIHObzqPzuO0qWLCHv/vspfP55XHv1Qu/nd/Tm74/ez1d77+uLOTUV0+YtmDZtwpycDIDw8MBj+HB8z5uN55jRuA0Y0C5hmNZ9+gEFaQc5b1Iw3rvehFHXwVnPdop3WYtx8dCG3cKHwMqHIekbbcFrn1nQ92xtf2tEwlIDW/6npYWoKYKek2HKe1qPq4PpTIcDA5rTwDQgB81p4DIp5d5655wN3MJfDgf/lVKObqqsEOI5oKSew0GAlPIeIcQA4LCwRAC/AQloPSI/KWWxEMKI5pSwUkr5RlP2K4eDxjEfOkT2jTdhyckh/NFH8Tt/blebhLXIRNmXKVjSK3Ht7Y//+fFHZRqtrq5m3bp1bNmyBbvdztChQ5k8eTL+TYRc6Qj2luzlrtV3UWAq4O6Rd3NZ324SQ81SA0UHkEYPSq1RpO0sIm1nEcVZ1YAWSy1uaDBxw4IJCPds1ObD8zMVX32FtaAAe3n5kQ27vcEyws0Nj+HD8Bg9Bo/Ro3EfNBDRznNtSWtW8dPrLzE41sAM91Uw5T6Yel/HDWe1J6WHYP/3sP9HyNoI0gE+UdDnLOg7S+u1HNtzkxKqC6E8E8ozoCILyjK0JHimEog7DabcC7Hj2t3cLvd2cxoxC3gZzV36XSnlk0KIGwCklG84Xa0XATPRXK0XHvZIa6isc38g8BkQA2QC86SUpc5jDwJXAzbgdinlT0IIT2ANYHTWtRK4U0rZ8H+CEyU+DVOzfj3Zt9+B0Ou1HDxd7FggHZLqP3Oo+DUDYdDhd24cHsNDjjwcq6qqWL9+PVu3bsVmszF48GCmTJnSYQtEG7VTSj5P/pynNz9NoHsgz095niHBQzrVBkAb4y86AEX7oXAfFO1HFuynoMiVNPNo0urGUmGPAAHhcb7EDQsmbmhwo8E7m4uUEkd1Nfaysr8EqaICY3g4boMHt2k47Xhs/3E5vy99m+gAmBu8DuPZT8OYf3RYex1KTTEk/6LFnUtdpWVSdfWFhOna+qSKLKfgZIHdfHRZ9wCIHq3NIUWP7jATu4X4nMgo8TkaKSVlH35EwVPdx7HAnF5B+bepWHNrcOsfiP+cePTOkPplZWWsW7eOHTt24HA4GDhwIFOmTGnXaNPNxWQ18eiGR/nx0I9MiJzA0xOf7lzHAnM1/PYYpPwKZemAxC4NZFuHksYMDlUPotbijk4niQwsIc78OT1DcvA8/z8QN7Xz7GxnpJSs//wjNn75MfF+VZwdnoTh/Ndg8EVdbdpxkVKSlFfJiqQC1qeW4OGiJ9TbjVBfN0J9XAnzcSPMQxJVugmfjF8RKb9qPSK/GOcWDX6x2nvfaO2za/t6rzVGd3C1VpwkOMxm8h95lIqvv8brtNOIeO65LnUssFeYqfjpEKadReh9XQi4rC/ug4IQQlBcXMzatWtJTEwEYOjQoUycOLHTezqHSS1P5c7Vd5Jemc6tw27l2kHXdnhw0KPI2gJfXQdl6Zh7zSXD9yYOFceQkemK1SIxuuqJHRRIz6FBxA4IxNXDCBlRsPxmeH82jLhKm+zupEWP7YV0OFj19svsXLWKAb75nDHUA935qzs8hlpbsNodbDlUyq9JBaxIKiCnvBYhYFCkL7UWO3tzKymuNnN0/8GAQXc2Id7nM6JHALOHRDC5dzAuhu43j6V6Ps1E9Xw0rPn5ZN/6T+oSEwm6+WaCbr6pyyIWSJuDqj9zqFqViXRIvCdH4T01Gp2Lnry8PNauXUtSUhIGg4ERI0Ywfvz4TnUkOJbvUr/j8Y2P425w59nJzzIm/NiVBh2I3QZrnqNy1Xuki+mke1xETqbE4ZB4+LjQc0gQPYcEE9XHH72xge/TWgu//wc2LAKvMDj35U5bc9JW7DYbP//nTvbvTWNEYB5TLr4EMfF2LY1BN6PabOOPA0WsSMpn1f5CKutsuBp0TIwPYkb/UKb1CyXY+69IA1a7g+JqM/kVdRRU1lFQaSa/so7c8lr+SC6i3GTFz8PIrEHhzBkaychY/za7vLcUNezWRpT4gGnbNrJvux1pMhHx7DN4T5/eZbbU7i+l4rtUbCV1uPUPxO/snhgC3cnMzOTPP/8kOTkZFxcXRo8ezdixY/HqwuyoZruZZzY/w+fJnzM8ZDjPTXmOEI8ODFBZD+mQFCbuI/2bzzlUFEWJrScA/mEe9BgcRNzQYEJ7+DQ/cGf2Nq0XVLRPSyE986mOifLcTlhLsvju0Vs5VGBjYi8zo//5MiKs+/V2DuRX8fbaNL7dmYvF7sDfw8i0fqHM6B/KpIQgPFxaPkhlsTlYm1LE8p25rEgqoNZqJ9LPnXOHRDB7aAT9wjtnGYESnzZyKouPFiX4U/KfeBKXyEiiXluEa3zHZF08HtYiExXfp1F3oAxDsDt+5/bCJd6X/fv3s379erKzs3F3d2fs2LGMHj260xaHNsa6nHU8u+VZ0irSuHrg1dw67NZ2zzp6LDaLnewDZRzaVUz69ixMJj0CB+ERdnqM60fPwUH4hbYhEZrNDGuehz9f1Catz35eSyndnTzFpKRu60d8s/gdcmo8mDG1L4Ovf6Z1Ka87CCkl61NLeGtNGn8kF+Fu1HPhiCjOHRLBiFh/9O3YQ6kx21iRVMA3O3NYm1KM3SHpE+rNtH4h9A33oU+oN3HBnhhbGeqoKZT4tJFTVXwcFgsFjz9O+edf4DllMpHPPYe+gYWXJquJcnM5ZeYyyur+2srN5VRbqwl0CyTcK5wwjzDCPMMI9QzFVd/8QIX2Giv53+zGsacGdFAXb6cmykJ6QQEp2bnU1NXh6eZGQlQEvXvEEtozDv+wCHRdtNYoozKD57c8z+rs1UR7R/PAmAeYGNlxaydqys2kJxaTnlhC9v5SbBYHRr2FGOMWekZWEnv5LbhFtOOiRNAWO35zE+TvhpjxMP1hLctnV1OWQc239/Plb7mUWDyZtfBK+px5cVdbdQSr3cGPiXm8tSaNvbmVBHm5snBCDy4fE4OfR8cvbi2pNvNjYh7f7MxlZ1Y5doemAUa9IC7Iiz5h3toWqr1G+rm3aahOiU8bORXFx1pQSM4//0ntrl1aROpbb0Xo9dRYa1ibvZaVmSvZXbSbsroy6ux1DdahF3rcDe5UW6v/dizALYAwzzDCPMII9wqnX0A/hocMJ8o76ohrtMNso+SXFEwb8tE59KRX72FH5Tqqfb2w+AeD3oDOVI1LaT6GqvKjwlroDQYCIqMJio4lKKaH9hodi3dQcIetpam2VPPW7rdYtm8ZrnpX/jH4H1ze73Jc9O37UJEOSWFmFemJxWQkllCUWQWAd4AbsdG19Cx8lUg2op/+AIy7peMWTtqtsH0p/PEsVBdoUZhPfwjCBnZMe40hJaSths1vUbJ7Nd9kD6Da4cHsux+ix7BRnWtLI1SbbXyyOZP31qWTU15Lr2BPrp8cx+yhkbgZu+ZHktlmJ62ohgP5VRwoqCI5v4r9+VXklNceOcfTRc/6+6bh69G6OTIlPm3kVBMf044d5PzzNuw1NUQ89RS2KSNZnbWa3zJ/Y0PuBqwOKwFuAYwNH0uIRwh+rn74u/nj7+qPv5v/kc/eLt7ohI46Wx0FpgLyavLIr8n/azPlk1+dT25NLrU27Q8+yD2IUYEjmFU8kdjdvhjtBnJqU6gZZKDEy4X9ycnYHQ7ie/ZkxNChREYcHXeqtqqSkuxMijLTKcnKoDgrk6qSoiPHXdzdCYruQWiveMJ69SasV2/8w8Lb5DjhkA6WH1zOy9tfprSulDnxc7ht+G0EubefK7el1kbW/lIyEktI31NCbaUFISCsly89BgURm2AgYOcTiN0fQXBfbUV82KB2a79p40yw+U348yWoq4RB8+C0ByCgZ8e2a66CXZ/A5rewFaawqbIPWwpCMLp7MPe+R4jo3a9j228GqUXVfLwpk0+3ZlFVZ2NMzwCunxzHaX1COn3yv7lU1VlJKazmQH4V6SU13Dezb6t/sCnxaSOnivhIKSldupTC519AFxZC4l1n84NIZHvhdhzSQaRXJKfHnM60mGkMDR7abmFgHNJBWnkaO/K3U7etiOFJPfB1+JBbm8YKl43UhPjiUuOGzqBj6NChTBg3gcDAwGbXX1dTTUlWJsVZGRRnZVCUkUbBoVRsZm3hnauHJ6Fx8YTF9yasVwJh8b3xDmiecOwo3MHTm58mqSSJIcFDuG/0fQwMavsvfyklZXkmMvaUkLG3mLyUChwOiauHgZj+AcQO0tyh3TwNkPi5Fn6/rgLG/xOm3APGLpjvqi3T4oNtfAMcVs01e/K/wPv4+X5aRHEKbH4bdn4ElirSXUfyW0YI5WVV9J0whalXXounXxdFpEab7P81KZ8PN2ayIa0Eg04wc2AY102KY0i0X5fZ1RUo8Wkjp4L42CsryXvwQapWrCRlcABPTqvA5CaI94tnWsw0psdOp49/nw4ZspIOSe3uIsp+SkVW2MgxZ7DDNZkSXyNWsx2L0UKyVzKHvA+hc9ExPHQ4Y8LHMCZ8DH39+7ZKBB12OyU5WeSnJpN/MJn81BSKM9NxOMO+ePoHENarN+HxvZ2i1BtXD22i3mQ18WfOn/yQ9gOrslYR4hHCnSPuZFbPWW26P1az5iyQsaeEjD3FVJdq4hgY6UnswEBiBgQS1ssX/eGJ4bJ0+P5OSP0NIkfAuf/t/CGvhqjK14biti8FnVGLIJBwBgT1Bs+gZjkn1Jht5FXUklteR0lxEeb8fRhKDjCk8ncSqjYjdUaq487jj6wQDuzcg394BNOuvonYwUM7/voaIavUxEebM/l8axbF1Rai/N25dHQM80ZGEeLdvQPFdhRKfNrIyS4+tXv2kvHPW7DnF/D+aYKNkwKZP+BKZsTOINannSeq6yHtmuhU/J6BvbCOQ7YMtun2U+lpxCElPXr0YMyYMfTu3Zsaew3b8rexKX8Tm/I2cbD8IAA+Lj6aEIVpYhTrE9tqAbBazBSlHzpKkMrycrSDQuAS5Eupv519rtnk+5iQQZ7M63cRVw+8Gg9jyz3IDvduMpNKyNxbQk5KOQ6bttgzqq//EcHxDjjmwWW3wcbXtbU3Oj1M+zeMulZ7350oTdNsTPyCI0Hl3fy0xGhBvSEoAUdAPEnWML7NcCWrsAi3shR8a1KJtmWRILJJ0OUQLkqPVFkg/fnAejpby2MYXLYbA3bkkGkMnDmX4T2DCfPt3Ie8ze7gt/2FfLQpkzUpRQhgWr9QLh8Tw+SE4G47tNZZKPFpIyer+EgpyXn/f5Q/9xJlHg5ev8CDCWcs5KoBV+Hl0nFrYxwWO6Yt+VStzcFSXst+DrFTpFLrqsdoMDBk6FBGjx5NSEjj62GKTEVHhGhj3kbya/IBCHQLJME/gXi/eHr79ybeL55efr1aJQ6ldaWs3P8zG3f+SnFqGgHlBkIq3HE1aw8UvdGFkB49j/SMwnol4B8W0eT8kdlkJWtfGVlJJWQmlVJdpvVu/MM8NLEZGEhEL7+GF3sC5O7Uwuvn74beZ2muzr5RLb62TqUyFwqTtOGy4hRkcTK2wgMYTX9lr7dLgV789Tyy6tyo8emFLaA3hrB+eEYNxBjWj7wSCz++9TrlmWlYwxLYEXUa28sNWO1a2VAfV4ZG+zEi1p8Rsf4MjPTF1dB+ouxwSPbnV7EhrYSNaSVsPlRKRa2VMB83LhkdzcWjogn37VoX/+6EEp82cjKKT3V5EdvvvJbg9clsj9eRedtsrp1wB8EewR3Wpr3GSs2GXKo35FJmquSATwF7a1Ox6wQ+Xl6MmzCBoUOHtnh9jpSSzKpMNuVtYnfRblLKU0grTzvKCy/KK4p4/3gS/BKI9o7G6rBSa6ulzlanvdq118NbWV0ZicWJR+a6ZsTOYHrsdAYGDqS6uJj81GTyUg6Qn5pCwaGDf58/6pVAWK/ehMTFU1vlSta+UjL3llKQXol0SFzc9ET1CyCmf0DDvZtjqS2HNc9pPR7PYC38f//Z3Wt9TRNIKdmbW8l3u3P5YXce2WW1+OtruSC2lplhVQxyK8bV01dzlgjuA74xR3np5aemsPOXH0haswoPX1+mXnktfcZPRghBndXOvrxKdmWVsyu7gu2ZZWSUmABwMegYHOl7RIxGxPoT6NV8N//DYrPRKTabnGIDEBvowdiegUzrF8LpfUMwdMA6mRMdJT5t5GQSH5vDxk8r3sD7sTcIKrWzZXYCk+99kV7+Hbdw1FZupnptNpVbcjlkyyfZp5CcuiKQEtfaas6Ycz7Dxo5D144uwXaHnZzqHFLKUkgpT+Fg+UEOlh0kvTId+zFBzA06A+56d9wN7rgb3XHTu+Fp9GRk2EhmxM447lxX/fmjgtQUcg4coCQ7HelwaCcID3SGELwCoons04eEMQPpObQnhub8Iq8th01vwIbXwVwBwxfAjEe7LsVzC0krquar7Tl8vzuX9BITBp1gYkIQZw8K54wBYfi6N+7Ca62rY9+6P9i98icK0g5icHVl0OlnMH7e5bh5Nt0zL6oysy2jjO2ZZWxNL2VPTiUWu/Z99AzyZHCULy56HXaphRmyS01o7A55ZJ/F7iAxp4JykyY2MQEejI0LYGxcIGPjAonwUz2c46HEp42cLOKzt2gP37x8K+csz8fsYcTlyfsZOuPSDmvPklNN9boccnems1+fw0GXfOrsFnx9fJB5mRjLirj4/x4npEdch9nwN5vsFgpMBbjqXXEzuOFucMeoa1ucL7PJSvaBMm04bV8plUW1SGnD1b0cb/8KdKKImoocynKzjgiSu7cPIT17ERoXT2jPXoT0jMc3OOSvIbvacti4WNvMFdD3HM2LLbwLUi+0kGqzjR935/HZ1iy2ZpShEzAhXhOcMweE4e/Z9Lqn4qwMdq34iaQ1q7DUmgiMimHIGbPoP+k0XD1aF8S2zmpnT04FWzPK2JZRRlJuJQ4p0QmBXqdtOoHzVdsMekGfUG9NbHoFEqnEpsUo8WkjJ7r4WO1W3v3zZdxeWMLoZAd1w/sy8L9vY+yAlALS5sCUWEz5ukwO5KWSbMgjX5Sj0+no27cv/XsnsPHd16mrqmTeQ08SGtc1oXrags1qJz+tkpwDmtgUplciJRhd9UT28Seqrz/R/QLwD/M4qsdktZgpzkinIO0gBYcOUnAolZKsjCMedi7u7gRFRhHsUkVw5VaC9cUEDZqMy/T7IHxwV11us5BSsvlQKZ9vy+bHxDxMFju9gj2ZNzKa84dFEuLT9LCizWolZdM6dq34iZz9e9EbDPQeO5HBM84isk//7pFkT9FilPi0kRNZfA6UHuD9d27jnE8z8Dbr8L/9ViKuvr7do1Hbyuuo3pDHwS1JHLBmc0hfiA07Af4BDB8xnKFDhyJsVj599H5qykq48MEnCE/o0642dBR2u4OijCqy95eRfaCM/NQK7DYHQicI7eFNVL8AovsFENrT5y836GZis1gozsqgMHk3RVt/oujQQYpr3TA7/opD5hsaRnBMT4JjexAQGU1ARBT+4REYXbvefTe3vJavtmfz+bZsMkpMeLkaOHdIOBeOiGZ4jF+jouGw2ylMTyMrKZHspESy9+3FUmvCLzScwdNnMmDqdDx8TqzUDYq/o/L5nILYHDaWbH2D2pfe4IoddqxxkcS/9DpufXq3WxtSSswHy8lZk8KeQ/tI0edRLepwdXNh8KAhDB06lOjoaIQQmCor+OzxB6kuKeb8Bx5tf+GRUgv9L3RgbNtD2eGQlGRXk32gjJwDZeSmlGM1a72TwCgvBk6JJKqPPxEJfri4t+3fyFCyn7Dkjwjb+SHYK+HMc5GT76HKGEZRxiGKMtIpykynKOMQqVs3IeXheSSBT1AIARGRBEREERAZ5XyNxsO38Yd+e5BVauKXvfn8sjefrRllSAnj4gK5bVoCMweGNRiFuTGxAQiIiKLfxCnEjxpH7KChXZamQ9F5qJ5PMznRej5p5Wm8/uHtzPoghbBy8FpwBVF3/qvd0hPbqyyUbclmz6Zd7K/NIF9XDkBcTE+GjRpO3759MRr/mkeprark88ceoCw/j/Pve5joAS0cQrLWapk3i5O1uZDasnqv9Ta7GQxu2oLGgedDwpngcnwXa4fdQXF2NTnJ5eSmlJN3sByzyQaAX6iHNpTWx5/IPn64e7XDPawugsTPkDs/RBTsxaEzkhkyjdQ+12EPGYiXmwFvVyNebgY8XfV4uxpxM+qwW62U5edSmpNNaW6W81XbDnvbARiMLngHBeMdFIxPUDDegc7Xep8NLfhbkFJyoKCKX/YU8MvefJLyKgHoF+7DzAFhzB0WSUygB1JKaisrqCgqoLKoiMriQiqLCijPzyM3ef9RYhM9YBBR/QcR3X9Ql0YjUHQsatitjZwo4mN32Plg9xJyFr3M7HU2HMH+9HrhFTxGtT24orQ5qN5bxL51u9iXf5BMUYxdOPD39GXYqBEMGTakwWRtddXVfP74g5TkZDL3noebvwLdboNDf2ihY/Z9BxZncFKjp+bp5e4P7n713ju3imxIWg41hWD00IJdDjwf4qcfCTnjsDsoyqwmJ7nsiNhY6rSejW+wOxG9/YhM8COyjz9e/u0ztGUx11GwdTn63R8RWrgWvbSTSDyfWifxnX0cFTTtvaXXCXzdjfQJ9WZQlC8DI30ZFOlLbIAHAklVaYkmRDnZVBYXUlVcRFVxEZUlRdSUlf6tPlcPT1w9PXF198DV0wsXDw/cPDxx9fTC1cMDo7sn+TV29uWUcSCvnIoaMzocRPm4EBfoTo8Ad7yMAqu5jsriIiqd7dks5qPb8fTEJziU8PjeRPcfRPSAwUpsTiGU+LSRE0F80ivSefmru5m+dC+98sH13JnEPvw4+jYmUqvLriTlj93sObiPQ44CLMKGu8GNAf36M2T0MKKiohod4jFVVvD1M49SlJ7G7Lv/j57D/vY3eDRSQs52TXD2fKkJiKsP9D9PC1YZMw4MzVij4bBDxjrY+zUkLcdaXU0BQ8jzOps82wDyC4xYzdrwlX+YBxEJfkT09iMi3h8v/+avAWkKs83O5uRckrevJijrFybV/U6AqKZA+vGtnMSuwLPxjh5I/3Bv+kf4EOXvQa3FTrXZRlWdjWqzjWqzlWqzneo67X1pjYWk3Er25VUdcRv2djMwIMKHQZF/CVKojxseLvoj34vNaqW6tISq4kKnUBRSW1mJ2VRDXU01FRVV1FRVU2eqwV5nQmeto6lBO53egM6gR683oDca8Q4Mxjc4BO/gEHyCQvAN0V59gkNa7Z2mODlQcz4nMXaHnY8S3yf1jZdYuNaK3sODiFf+g++ZrU9zbKu2kL42icRdu0mpzcEkzBiFgT494xkyfgRxveLQHydXTuq2zfz65n8x11Rzzh33Ny08Jamw+zNNdEpTQe+iDZ0NvkgbOmvhHI6p2k5eeV/yam8iz34ZRUVVWq77QgeBhgz6uKUSEWMmom8IngnDIKp3u2TkLC/MYf+WFVSn/Elw2Q7GcIhJwo4FI6lBU0jucxFBg8/k6hDfNiULs9gcJBdUsSengsScCvbkVLB0QwYWm+PIOXqdwMvVgLebAW83I95uBnzcDHi7BeLtFkqZm5WUiirSKmo0IfMAPCDSz52EEE8S/I30DXFnUp8w/DxdjwiOrruF8FGckKieTzPprj2fjMoM3lh2O1M/3k9MMbicPpmYRx7H2ERYmsaw11nJ2JDM3h2JpFRkUilM6BDEBccweOxw+g7qh0sz5gkstSZWv/8Oiat+JTi2J2fdchfBMT3+fqKpVOvd7PoEcrYCAnpM1ASn33nakFozcNgdlObVkJ9WScGhCvJSK6go1NIz6I06Qnv4EB7vS3i8H2GxHrjmrYPknyBrExTshcMT+EG9IWo0RI/SXoP7/rXC3uHQ5pOstVomT5vz1WKiKHUbpfvW4lO0lXB7LgBmjOR59kPEjCV84FRc4iY0+3pai9WuCVJSbiUlNRaq6qxU1dmcm5XKeu+r6mx4uRroHepF71Bv4kO0114hXni5qt+kivZDDbu1ke4mPg7p4JPN71D+8quctsOGNdiPHo8+ic/pp7esHouNjE0p7N2+m+TSdCpFLQJBtE8YA4YMYvD4YS0KdZO9fy8/v/YiFUWFjDrvAsbPuxxDPccDbGZI/gV2f6q9OqwQMgCGXKwNq/lEHLcNU6WFgkMV5B/SxKYgvQqb0xPN3dtIaE9fIuL9CI/3JTjGG72hCc8pczXkboeszZC9RXutdc6PGD1BZwBbnSY8TVAivTlg7I81cjQRg6bSa/BEdC5d7watUHQ1atjtJCKjIoNPXr2JKV+l4V0ncJt/CX1uvxudZ/PG1h02O1lbD5K4ZRfJxelUChMCQZRPKBMGTWDAuKF4ebdsnshmtbL+sw/Y8t1X+IaEcvEjTxPVd4B2UErtwb7rY9jzFdSVg1eoFmZ/yCVNJjyzmu0UZVZRmFFJYUYVBYcqqCzW4rXpdIKgaC/6jQsnLM6H0J6++AS5tczF2NULek7WtsO2lqRC9mbI263tM7giDW7km2BPoYVdebXkVkvMwoXY0ADi+gxlzMjRjA9UcxsKRXNR4nMC4ZAOvvxtEbzwFucdslPbJ5q4p1/Bvd/xszU6rHbSNu0naeceDhanU4nWw4nyCmX8wHEMmjgcT+/WPTyLMtP56dXnKcpMZ9C0M5k6/xpc3NwhPxH2fgN7v9JC6xvcod85muD0nAr6o//87FbN3VkTGk1syvJqONw59/J3JSTWhwGTIwmL03o1Rpd2nn8QAoLiISgex+BL2ZFVzk+Jefy0LZ+c8lr0OsH4XoGcNS2cMwaEEtSCAJUKheIvlPicIKQWHmDlUzcz9tccpFGPx7230/fKaxFNTPpbay2krN/DvsQkUsuyMAkzOqkJzri+Yxk8ZQSePq33hHM47Gz7/hvWfboMV08v5vzrIXpFecD6FzQvs9JUbcFnz8laNst+54KrN6ClhC7OKac4q5rirCqKsqooza3B4QyL7+5tJCTWh7hhwYTG+hAc642nb8c/6Euqzfx5sJg/U4pZk1JEQaUZF72OiQlB3D49gRn9Q/HzaJ+1UgrFqYwSn25OmamU79+4l9hP/2RyBVROGsTwJxZhDG3YocBcVcu+tbvYt28fhypzsAgbBvTE+kbQr38/BkwcirtXy/Pa1Kco4xBJa39n/5+rqS4rJWHwAKYPccVj/Y1HC874WzHFnUVysYHS7Goqv8iipqAWU2EtlnLLkfp0bnr0AS74Dw8kNt6fvv0D8Qty75RYXnVWO9syylibUszalCL25mqLJ33djUyID+SM/mGc3i8EH7e2BR5VKBRHoxwOmklnOxxYHVZ+/OQpXN/6jNh8O2Wx/vS8/2HCp/7dfboit5Sk9bs4kJpMlqkAu3DgipE4/2j6DR5A33GDcHFr26/16tIS9q37g31rVlGUmY5Op6NHlDeDPA/RS+4FnY6KsOkkuZ5JoqkfhUUSe5kFL7PEXf4lImU6B4V6SaHecWSrFlB/UYleJ4jydyc20JMegR70CPSkR5AHsYGeRPi6497KoTaTxUZOWS3Z5bUcLKhm7cFiNh8qoc7qwKgXDI/xZ3LvYCbGBzEwsm2u0AqFQkM5HJwgSClZ/8dHFL3wAn1SaqkIcEX3yO2Mu+jqI/GuHA4Hefuy2LdlNynZaRRYy0CAl3BnYEgC/YcNpNeofhiMbft6LXW1pGxaT9La38ncswukJCzAyMSIUoKNgho82F93Hr9a7sRU54d73mGvMjNeOrB66nGJcCMgwgvvcA+8Qz1w8zBg0Osw6gUGnQ4Xg/aqE4KCqjrSi2vIKDFxqKSGjJIatmeUUW22HWWXp4ueIG9XAj1dCPJyJcjblSBPF+3VyxWdEOSU15JTVktOuenI+zJnTpbDxId4cenoGCYlBDGmZyCeysVYoeg0VM+nmXRGzyclaT2JT91Pny2F1LrrkAsuYPiND6J3dcVmsZK6eT/7dyeRWpRBpdRiZAUb/EiIiqP/qEFE9IttUzK26rJSLdR/2kHyU1PI2rMTm9WKm9EVH9cA9C59qaYPVvnXsJ0Vicldh8HfhYBwT3r08mNg/yBCQz3bZdhMSklpjYX0EhPpxTXkV9ZRUm2huNpMcbX5yPtSk4Vj/5Q9XPRE+rkT6e9+1GuUvzsxAZ4EeytnAYWio1E9n25McUE66566k54r9tFLQOHccYy75zmsdgPbftlMSkoyGVV5WLChk4Joj1BGx41gwISh+EcEtqrNqpJispIOkL3vAAWHDlKel46ltvLIcaELQGfoh4t3P6Q+ggp9DaU6SY7BBe8QF3r29GXEoBBG9AnCaOy4Fe9CCAK9XAn0cmVEbOPxwOwOTaSKq83YHZJIP3f8PIwqB4xC0U1R4tOF5KUnsfWVfxP5217iLZA5sRc9r3gAe0YpS17/kAJLKVKAOy7E+8XQu18f+k4YjJvX8Rd92m02ijLzKUjLojgrh7K8fKpKCjBVFGMxleCwm46cK3QBCEMkHh698XXR4eNmo1IvSNN5sllvwCPWnbG9o5nZK4gh0b64Nif1cyej1wmCvV1Vb0ahOEFQ4tMFZOzfzO5XHidmzUFiDO6kTTkDc8xAsmtK2bT6VwCC9L6MjhlKv2H9iRkSj9AJTBY7eoMOh8NBRVE5RRl5lGYXUFagRTCuKS+ltqoUi6kUu7UCcNRrVSB03ri4eOHtEYKP3kKoSwWR7sUIlxQSKWWLTOAH/QB8ogYwskcAU3oGcFdsQKsn+BUKhaIxOnXORwgxE3gF0APvSCmfPua4cB6fBZiAq6SU25sqK4QIAD4FegDpwEVSyjLnsfuBawA78E8p5S/O/SOAJYA78CNwmzzOjWiPOZ+DO1az75X/EJxhpDCuP7nhQRTpzdiFA73UEW4MINDLAyFMVFeWYqmsxmYyYzdbsFtt2O1WHHYLDocJsP2tfqHzQKd3x8VgxNPgINBYRYhLOSGuxYS65uOuN1Et3cmWQeyVsWxy9CPNYyihPfoxskcAI2MD6BfujaGFmTgVCoWiMbo8tpsQQg8kAzOAbGALcKmUMqneObOAW9HEZwzwipRyTFNlhRDPAqVSyqeFEPcB/lLKe4UQ/YGPgdFABLAS6C2ltAshNgO3ARvRxOe/UsqfmrK/LeKzc+XXHPzqD2pdg8j31lGj09a4+Djc8DPrENXlVFfkYLXVIGVdAzXo0OncMehdcTEYcTOCh9GGl4sZX5dq/F1K8XcpwUXYENJOuT6QUkMoZS5hVLiEUekWQY1bODUeEUhXP1yMenoFezIi1p9Iv85ZT6NQHI/Dz6LDT6Qjr/KYz8ijjtU//8iRv+3/q42/1X9MG3+dcez+eu03uP/o+puq++/7/153w/dCNnJdR9fBMXUfW77haz/6/te//vH+Xuhb+ZzoDg4Ho4GDUso0p0GfALOBpHrnzAbed/ZCNgoh/IQQ4Wi9msbKzgamOssvBVYD9zr3fyKlNAOHhBAHgdFCiHTAR0q5wVnX+8AcoEnxaQ0Wcx2Lr7oBhzy8oLIQQx7UT7dWUe+9wAUhGlmPI8Fms2Gz2TDVgRb6Ugf4OLceDRSqQ+sMpgNQv+Y056ZQKBTHI+75p4iMim3XOjtTfCKBrHqfs9F6N8c7J/I4ZUOllHkAUso8IcThpf+RaD2bY+uyOt8fu/9vCCGuB64HiImJaeLSGsbF1Q2d0AFHT4K3pZ/Rkf1U1f9RKBQN4WJo/5BSnSk+DT3bjn2WNnZOc8o2t71m1yWlfAt4C7Rht+O01yC3fvRua4opFArF/7d3/6F+1XUcx5+vbM5KaS1XTDfyuiYhotuiMVoJQZTunxkljIStGETlQgmLhSBGFJok+E+KkiASif3SOyJLRZmItS3djzvWcmuWc2t3VtqkWOne/XE+1x2/93u+93q553M+d74e8OV7zuf7+X6/r/uG733fc77nnnNKy/nN8kFgYW19AXBoknMGPfdI2jVHuh+dxGstmCCHmZm1KGfz2QosljSk6ouNNcBwz5xhYK0qK4CX0y61Qc8dBtal5XXAg7XxNZJmSxoCFgNb0usdk7QiHV23tvYcMzPLINtut4h4VdIG4DdUh0vfHRG7JX05PX4H1ZFnq4B9VIdaf3HQc9NL3wTcL2k98FfgyvSc3ZLupzoo4VXg6oh4LT3nK5w81PrXtHCwgZmZNfO53SaptMtom5nNBE2HWvu/Cc3MLDs3HzMzy87Nx8zMsnPzMTOz7HzAwSRJOgr8ZYpPPxt4cRrjtMU5p5dzTq+ZkHMmZIS8OT8QEfN6B918MpC0rd/RHqVxzunlnNNrJuScCRmhjJze7WZmZtm5+ZiZWXZuPnnc2XWASXLO6eWc02sm5JwJGaGAnP7Ox8zMsvOWj5mZZefmY2Zm2bn5tEjSZZL2StonaWPXeeokPSdpl6TtkralsbmSHpb0bLp/Twe57pY0KmmkNtaYS9K3Un33Svp0xzlvlPRCqul2SasKyLlQ0mOS9kjaLemaNF5UTQfkLKqmks6QtEXSjpTz22m8tHo25SynnhHhWws3qks/7AfOB04HdgAXdp2rlu854Oyese8DG9PyRuDmDnJdCiwDRibKBVyY6jobGEr1Pq3DnDcC1/WZ22XO+cCytHwW8KeUp6iaDshZVE2proR8ZlqeBfweWFFgPZtyFlNPb/m0ZzmwLyL+HBH/Be4DVnecaSKrgXvS8j3AFbkDRMRm4B89w025VgP3RcTxiDhAdR2o5R3mbNJlzsMR8XRaPgbsAc6lsJoOyNmkq5wREa+k1VnpFpRXz6acTbLndPNpz7nA87X1gwz+MOUWwG8l/UHSl9LY+6O60ivp/n2dpXujplwl1niDpJ1pt9zYrpcicko6D1hK9VdwsTXtyQmF1VTSaZK2A6PAwxFRZD0bckIh9XTzaY/6jJV0XPvKiFgGXA5cLenSrgNNQWk1vh1YBCwBDgM/SOOd55R0JvBz4NqI+NegqX3GsmXtk7O4mkbEaxGxBFgALJd00YDppeUspp5uPu05CCysrS8ADnWUZZyIOJTuR4FfUm1iH5E0HyDdj3aX8A2achVV44g4kj7wJ4C7OLnbotOckmZR/UL/cUT8Ig0XV9N+OUutacr2EvA4cBkF1nNMPWdJ9XTzac9WYLGkIUmnA2uA4Y4zASDpXZLOGlsGPgWMUOVbl6atAx7sJuE4TbmGgTWSZksaAhYDWzrIB7z+S2fMZ6hqCh3mlCTgR8CeiLi19lBRNW3KWVpNJc2TNCctvwP4JPBHyqtn35xF1bPtoy7eyjdgFdVRO/uB67vOU8t1PtWRLTuA3WPZgPcCjwLPpvu5HWT7CdXugP9R/TW2flAu4PpU373A5R3nvBfYBeyk+jDPLyDnx6h2n+wEtqfbqtJqOiBnUTUFLgaeSXlGgBvSeGn1bMpZTD19eh0zM8vOu93MzCw7Nx8zM8vOzcfMzLJz8zEzs+zcfMzMLDs3H7PMJM2R9NXa+jmSftbSe10h6YaGx15J9/MkPdTG+5s1cfMxy28O8HrziYhDEfG5lt7rm8APB02IiKPAYUkrW8pgNo6bj1l+NwGL0vVUbpF0ntJ1gSR9QdIDkjZJOiBpg6SvS3pG0u8kzU3zFkl6KJ0Y9glJH+p9E0kXAMcj4sW0PiTpKUlbJX2nZ/oDwFWt/tRmNW4+ZvltBPZHxJKI+Eafxy8CPk913q3vAv+OiKXAU8DaNOdO4GsR8WHgOvpv3awEnq6t3wbcHhEfAf7WM3cb8PEp/jxmb9rbuw5gZuM8FtU1bY5JehnYlMZ3ARenMz9/FPhpdUo0oLoIWK/5wNHa+krgs2n5XuDm2mOjwDnTE99sYm4+ZuU5Xls+UVs/QfWZfRvwUlSnyx/kP8C7e8aazqd1RppvloV3u5nld4zqUtFTEtV1bg5IuhKqM0JLuqTP1D3AB2vrT1KdXR3Gf79zASfPcGzWOjcfs8wi4u/Ak5JGJN0yxZe5ClgvaezM5P0u0b4ZWKqT++auobpw4FbGbxF9AvjVFLOYvWk+q7XZKUzSbcCmiHhkgnmbgdUR8c88yeytzls+Zqe27wHvHDRB0jzgVjcey8lbPmZmlp23fMzMLDs3HzMzy87Nx8zMsnPzMTOz7Nx8zMwsu/8D5/Vk5aMg6xQAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -970,7 +970,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] From 213dfceac2c8df6593ff3ec2fb69f667701f8d5f Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 04:08:29 -0400 Subject: [PATCH 19/23] Update to 9pl_18tp initial conditions --- .../9pl_18tp_encounters/cb.in | 5 ++ .../9pl_18tp_encounters/cb.swiftest.in | 4 +- .../9pl_18tp_encounters/param.swifter.in | 4 +- .../9pl_18tp_encounters/pl.in | 33 ++++++++++ .../9pl_18tp_encounters/pl.swifter.in | 48 +++++++------- .../9pl_18tp_encounters/pl.swiftest.in | 32 +++++----- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 18 +++--- .../9pl_18tp_encounters/tp.in | 64 +++++++++---------- 8 files changed, 123 insertions(+), 85 deletions(-) create mode 100644 examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.in create mode 100644 examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.in diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.in new file mode 100644 index 000000000..81c636655 --- /dev/null +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.in @@ -0,0 +1,5 @@ +0 +0.00029591220819207774 +0.004650467260962157 +4.7535806948127355e-12 +-2.2473967953572827e-18 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in index 81c636655..2e8d49f62 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in @@ -1,5 +1,5 @@ 0 0.00029591220819207774 0.004650467260962157 -4.7535806948127355e-12 --2.2473967953572827e-18 +0.0 +0.0 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in index ab8bf65ca..627edf452 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in @@ -21,6 +21,6 @@ CHK_QMIN_RANGE 0.004650467260962157 1000.0 EXTRA_FORCE NO BIG_DISCARD NO CHK_CLOSE YES -J2 4.7535806948127355e-12 -J4 -2.2473967953572827e-18 +J2 0.0 +J4 0.0 RHILL_PRESENT YES diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.in new file mode 100644 index 000000000..bd980fc4b --- /dev/null +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.in @@ -0,0 +1,33 @@ +8 +1 4.9125474498983623693e-11 +1.6306381826061645943e-05 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-0.0115920916602103591525 0.028710618792657981169 0.0034094833969203438596 +2 7.243452483873646905e-10 +4.0453784346544178454e-05 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.00021427347881133320621 -0.020313576971905909774 -0.00029114855617710840843 +3 8.9970113821660187435e-10 +4.25875607065040958e-05 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +0.015830039028334789986 0.0059737936889703449964 -3.3484113013969089573e-07 +4 9.549535102761465607e-11 +2.265740805092889601e-05 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-0.0051275613251079554117 -0.011607719813367209372 -0.000117479966462153095864 +5 2.825345908631354893e-07 +0.00046732617030490929307 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +0.0043972077687938898594 0.006432188574295680597 -0.00012509257442073270106 +6 8.459715183006415395e-08 +0.00038925687730393611812 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +0.0040140666547768266703 0.0035242303011843410798 -0.00022097170940726839814 +7 1.2920249163736673626e-08 +0.00016953449859497231466 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.0026158276515510360365 0.0027821364817078499815 4.40781085949555924e-05 +8 1.5243589003230834323e-08 +0.000164587904124493665 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.00046987400245862169295 0.0031274056019462009859 -7.51415892482447254e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in index 7961512ca..701e9a14f 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swifter.in @@ -2,35 +2,35 @@ 0 0.00029591220819207775568 0.0 0.0 0.0 0.0 0.0 0.0 -1 4.9125474498983623693e-11 0.0014751244996981091688 +1 4.9125474498983623693e-11 0.0014751243077781048702 1.6306381826061645943e-05 -0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 --0.009135456552973951483 0.029147783460550278495 0.003219860945895814102 -2 7.243452483873646905e-10 0.006759105927487850036 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-0.0115920916602103591525 0.028710618792657981169 0.0034094833969203438596 +2 7.243452483873646905e-10 0.006759104275397271956 4.0453784346544178454e-05 --0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 --0.00035550721437125498313 -0.020314924633110978403 -0.00025828764648639637377 -3 8.9970113821660187435e-10 0.010044781409779763954 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.00021427347881133320621 -0.020313576971905909774 -0.00029114855617710840843 +3 8.9970113821660187435e-10 0.010044787321379672528 4.25875607065040958e-05 -0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 -0.015928292296008950135 0.005704842145070231768 -3.222239146362504855e-07 -4 9.549535102761465607e-11 0.007246745952808948377 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +0.015830039028334789986 0.0059737936889703449964 -3.3484113013969089573e-07 +4 9.549535102761465607e-11 0.007246743835971885302 2.265740805092889601e-05 --1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 --0.0052248882958565064094 -0.011564320429164449966 -0.0001141828894241637938 -5 2.825345908631354893e-07 0.35527129445679039879 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-0.0051275613251079554117 -0.011607719813367209372 -0.000117479966462153095864 +5 2.825345908631354893e-07 0.35527126534549128905 0.00046732617030490929307 -4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 -0.0044065962928417608604 0.006425243736188544774 -0.00012527374697365590813 -6 8.459715183006415395e-08 0.43765252895139074356 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +0.0043972077687938898594 0.006432188574295680597 -0.00012509257442073270106 +6 8.459715183006415395e-08 0.4376527512949726007 0.00038925687730393611812 -6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 -0.004015969235853926976 0.0035219001519798780186 -0.00022100689998454499602 -7 1.2920249163736673626e-08 0.4695335374930126262 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +0.0040140666547768266703 0.0035242303011843410798 -0.00022097170940726839814 +7 1.2920249163736673626e-08 0.4695362423191493196 0.00016953449859497231466 -14.8586976850394894 13.004806892491039605 -0.14422203290693380584 --0.002615247360000599007 0.0027826291421300451516 4.4072431030456472162e-05 -8 1.5243589003230834323e-08 0.78128379442879379807 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.0026158276515510360365 0.0027821364817078499815 4.40781085949555924e-05 +8 1.5243589003230834323e-08 0.7812870996943599397 0.000164587904124493665 -29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 -0.00047020985112446482199 0.0031273464291932001093 -7.514820514613305166e-05 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.00046987400245862169295 0.0031274056019462009859 -7.51415892482447254e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in index 5e89dafc6..bd980fc4b 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/pl.swiftest.in @@ -1,33 +1,33 @@ 8 1 4.9125474498983623693e-11 1.6306381826061645943e-05 -0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 --0.009135456552973951483 0.029147783460550278495 0.003219860945895814102 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-0.0115920916602103591525 0.028710618792657981169 0.0034094833969203438596 2 7.243452483873646905e-10 4.0453784346544178454e-05 --0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 --0.00035550721437125498313 -0.020314924633110978403 -0.00025828764648639637377 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.00021427347881133320621 -0.020313576971905909774 -0.00029114855617710840843 3 8.9970113821660187435e-10 4.25875607065040958e-05 -0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 -0.015928292296008950135 0.005704842145070231768 -3.222239146362504855e-07 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +0.015830039028334789986 0.0059737936889703449964 -3.3484113013969089573e-07 4 9.549535102761465607e-11 2.265740805092889601e-05 --1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 --0.0052248882958565064094 -0.011564320429164449966 -0.0001141828894241637938 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-0.0051275613251079554117 -0.011607719813367209372 -0.000117479966462153095864 5 2.825345908631354893e-07 0.00046732617030490929307 -4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 -0.0044065962928417608604 0.006425243736188544774 -0.00012527374697365590813 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +0.0043972077687938898594 0.006432188574295680597 -0.00012509257442073270106 6 8.459715183006415395e-08 0.00038925687730393611812 -6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 -0.004015969235853926976 0.0035219001519798780186 -0.00022100689998454499602 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +0.0040140666547768266703 0.0035242303011843410798 -0.00022097170940726839814 7 1.2920249163736673626e-08 0.00016953449859497231466 -14.8586976850394894 13.004806892491039605 -0.14422203290693380584 --0.002615247360000599007 0.0027826291421300451516 4.4072431030456472162e-05 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.0026158276515510360365 0.0027821364817078499815 4.40781085949555924e-05 8 1.5243589003230834323e-08 0.000164587904124493665 -29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 -0.00047020985112446482199 0.0031273464291932001093 -7.514820514613305166e-05 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.00046987400245862169295 0.0031274056019462009859 -7.51415892482447254e-05 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index 3d3ffb629..69f51f7d5 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -461,9 +461,9 @@ "array([ 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104, 105, 106,\n", " 107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n", "Coordinates:\n", - " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" + " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" ], "text/plain": [ "\n", @@ -846,10 +846,10 @@ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", " id int64 4\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
  • " ], "text/plain": [ "\n", @@ -876,7 +876,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAElCAYAAADnZln1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAp10lEQVR4nO3de5wcdZnv8c83M5MMuUCEBCGEkIBCAhFCiKCCiCgsuLjIRVcurigr6rpeVjnK6q6CexRcjyiuumfxAgoesi7rBRWQS3BxAcUAQYIQBUETCBAC2WSS6emeyXP+qJqkGebS3VRPX+r7fr36NdVV1VVPV8888+tfVT0/RQRmZtb+JjQ6ADMzGx9O+GZmOeGEb2aWE074ZmY54YRvZpYTTvhmZjnhhJ8zks6XdGU6PUdSj6SORsc1GkmvlrSq0XHA2LGM5zGV9HNJf51OnyHphrJlh0v6fRrLmyS9WNKtkjZJ+kK9Y7Pm5ITfYiQ9Kun1Q+adJem/q91WRPwpIqZGxEB2EVZHUkh6yWjrRMQvImK/8YppNENjGfp5NOqYRsR3I+LYslmfBr6SxvJD4BzgaWDHiPjIeMZmzcMJ35qapM5Gx9Ci9gLuH/L8t1HDnZb+DNqHE34bkjRL0n9KWifpEUkfGGG9uWkLu7PsdddIekbSQ5LeVbZuh6SPS3o47Ra4S9Ke6bL5km5MX7dK0lvKXne5pK9K+mn6ul9J2idddmu62r1p18NfSjpK0hpJH5P0BHDZ4Lyybe4p6fvp+1sv6SsjvL/zJV0t6d/Tfd8t6aCy5QvSbpENku6X9Bdly94g6bfp6x6TdG46f1sskq4A5gA/TuP/aJXH9HxJ35P0nXQ/90taMsrneoykByX9T/qeVbZs27c8SQ8De5fFdRXwduCj6fPXS5og6bz081yfxrHzkN+LsyX9CViWzn+npAckPSvpZ5L2Ktt/SHpP2o30bPqZl8f3rvS1m9Ljurjs+Az7uyrpUEnLJW2U9KSki0c6NlahiPCjhR7Ao8Drh8w7C/jvdHoCcBfwSWAiyR/+H4A/S5efD1yZTs8FAuhMn/8X8DWgG1gErANely77X8B9wH4kieYgYBdgCrAaeAfQCSwm6To4IH3d5cAzwKHp8u8CS8tiD+AlZc+PAvqBzwGTgB3SeWvS5R3AvcAX0313A0eMcKzOB0rAqUAXcC7wSDrdBTwEfDw9TkcDm4D90teuBV6dTr8IWFwW35qRPo8qj+n5QAF4Q/q+LgR+OcJ7mQFsLHsvf5cep78e+jswQlyXA/+77PmHgF8Cs9Pj/G/AVUPew3fSY7wD8Kb0eC1IP8d/AG4f8jn+BJhO8k9wHXBcuuzNwGPAy0l+d15C8o1jrN/VO4C3pdNTgVc0+u+v1R8ND8CPKj+w5A+5B9hQ9tjC9oR/GPCnIa/5e+CydPp8hkn4wJ7AADCt7HUXApen06uAE4eJ5y+BXwyZ92/Ap9Lpy4FvlC17A/Bg2fPhEn4R6B4ybzDhvzJNJp0VHKvzKUugaYJZC7w6fTwBTChbfhVwfjr9J+DdJH3eDBdL2ecxbMKv4JieD9xUtmx/oHeE9/JXQ96LgDXUnvAfIP3Hkz7fneSfY2fZe9i7bPl1wNlDjuUWYK+yz/GIsuXfA85Lp38GfHCY9zTW7+qtwAXAjEb/3bXLw106relNETF98AH8TdmyvYBZaTfFBkkbSFqxLx5jm7OAZyJiU9m8PwJ7pNN7Ag8P87q9gMOG7O8MYLeydZ4om95C0lobzbqIKIywbE/gjxHRP8Y2Bq0enIiIrSRJclb6WJ3OG1T+fk8h+ef0R0n/JemVFe6v3FjHFJ5/bLo1fJ/5rCHvJcqf12Av4Adln9kDJP+cyn9PVg9Z/5Ky9Z8h+acz2nsZ/JxH+90Z7Xf1bGBf4EFJv5Z0QtXv0p7DJ2Paz2rgkYh4aZWvexzYWdK0sgQ1h+Sr+OB29wFWDrO//4qIY2oNeBijnVhcDcyR1Flh0t9zcELSBJIujMcHl0maUJb05wC/A4iIXwMnSuoC/pakxbptWxXGOtYxrcbaIe9FI8RTqdXAOyPitqELJM1NJ2PI+p+JiO/WuK99Rpg/4u9qRPweOC393E4Grpa0S0RsriEGwydt29GdwMb0pOcOSk62LpT08tFeFBGrgduBCyV1SzqQpIU1+Af+DeCfJL1UiQMl7ULSb7uvpLdJ6kofL5e0oMJ4nyTpu63m/a0FLpI0JY318FHWP0TSyWmr+UNAH0nf9a+AzSQnMrskHQW8EVgqaaKS69p3iogSSd/5SJdZjhh/Bce0Gj8FDih7Lx/gud+iqvV/gc8MnniVNFPSiWOs//eSDkjX30nSmyvc1zeAcyUdkv7uvCTd76i/q5LOlDQz/Ye8Id1Wwy4hbgdO+G0mkuu/30hygvARkhOo3wB2quDlp5H03z4O/ICkH/7GdNnFJK3cG0gS4DeBHdKW67HAW9PXPcH2E66VOB/4dvqV/i1jrVz2/l5C0s++huQ8wkh+lC5/FngbcHJElCKiCPwFcDzJMfoa8FcR8WD6urcBj0raCLwHOHOE7V8I/EMa/7nDLB/tmFYsIp4mOfl5EbAeeCnwvNZ5FS4BrgFukLSJ5J/gYaPs/wckn+vS9JisJDl2lcT+H8BngP9HcmL8h8DOFfyuHgfcL6knjfeto3T1WQWUnhwxazuSzic5ITxSsjbLFbfwzcxywgnfzCwn3KVjZpYTbuGbmeWEE761DQ1TSbRdaEiNHrNaOOFbS0mT3mYlRcAek3Sxxrmevyoo6WzWjJzwrRUdFBFTgdcBpwPvGmN9M8MJ31pYepPUL4CFQ5elpXXvSG+IWivpK5Imli0fq5zvsKWANXxJ5xmSfpLu6xlJv0jLATyPpFeldWH+J/35qrJlP5f0T5JuU1JG+AZJM4bZxpsl3TVk3kck/bC6I2h544RvLUvS/iRVL+8ZZvEASQnhGSQVNl/Hc4vMAZxAUrL3IOAtwJ+l230TSRGvk4GZJP9UrgKIiCPT1x4UyWhS/w58hOSO35kkhb8+zjA1dpTUm/8p8GWS0tIXAz9NS1QMOp2k1PSuJCWDh7t79xpg3pDyFWcCVwyzrtk2TZ/wJX1L0lOShhbtqnV716ctsZ8MmS9Jn5H0u7RlN+ygIdYU7pb0LPBjklvxLxu6QkTcFRG/jIj+iHiUpGTza4asdlFEbIiIPwG3kNziD0lZ5Asj4oG0QNtngUUqG/BjiBJJeeG90rINv4jhr3f+c+D3EXFFGtdVwIMk5QUGXRYRv4uIXpJSFouGbiQi+oB/Jy33kNa3mUtS18hsRE2f8EnqeB+X4fY+T1InZaizSKoPzo+IBcDSDPdp2VocES+KiH0i4h+GlDgGQNK+aTfLE2ntl8+StPbLjVTOt5JSwOU+TzI4yA2S/iDpvBHWm0VSHrncWOWSRyol/W3g9LQb6m3A99J/BGYjavqEHxG3kvzBbSNpn7SlflfaXzq/iu3dTFLAaaj3Ap8eTB4R8dQLidsa7l9JWs8vjYgdSbpZNPpLtlkNvLt8zIGI2CEibh9u5YjYFBEfiYi9SVrrH5b0umFWfZzkn0m5msolR8QvSQaKeTVJN5C7c2xMTZ/wR3Ap8P6IOISkj/NrGWxzH+AvlYyheZ2kauvJW3OZRlLVsydtELy3iteOVQr4OSWRJZ2QlvwV20spD1fG91qSUtKnS+qU9Jcko1zV2hXzHeArQH9E/HeN27AcabmEL2kq8CrgPyStIOmb3T1ddrKklcM8flbBpicBhYhYAnwd+Fad3oKNj3NJWr6bSD7Pf6/0hRWUAj6f55Z0filwE8nQk3cAX4uInw+z3fUkJ4o/QlLi+KPACWnp41pcQXKFklv3VpGWqKWjZASen0TEQkk7AqsiYvcXsL2jgHMj4oSyeQ+SDLr8aNpS2xARldSQN2sISTsAT5Gc0/h9o+Ox5tdyLfyI2Ag8MvgVO7265qAMNv1D4Oh0+jWkQ92ZNbH3Ar92srdKNX0LX9JVwFEkV1g8CXwKWEZyUm53oAtYGhGfrnB7vwDmk1z9sB44OyJ+Jmk6ydBzc0i+mr8nIu7N9M2YZUTSoyQnod8UEcPdh2D2PE2f8M3MLBst16VjZma1aepSqzNmzIi5c+c2Ogwzs5Zx1113PR0RM4db1tQJf+7cuSxfvrzRYZiZtQxJQ+/m3sZdOmZmOeGEb2aWE074ZmY50dR9+MMplUqsWbOGQqHQ6FBG1N3dzezZs+nq6mp0KGZm27Rcwl+zZg3Tpk1j7ty5lA1Q1DQigvXr17NmzRrmzZvX6HDMzLZpuS6dQqHALrvs0pTJHkASu+yyS1N/AzGzfGq5hA80bbIf1OzxmVk+tVyXjplZVjY+vY6Vt9zIMIOmNVTXpG4OPfHUzLeby4T/qle9ittvf/7gRWeddRYnnHACp56a/YE2s+Zz/89v4o6r/x802bfyKTtNd8LPynDJ3szyp693C12TuvnAd65udCjjIpcJf+rUqfT09BARvP/972fZsmXMmzcPVw41y5dSoZeu7u5GhzFuWvKkbVZ+8IMfsGrVKu677z6+/vWvu+VvljOlQsEJPy9uvfVWTjvtNDo6Opg1axZHH3302C8ys7ZRLBSYOMkJPzd8CaVZfiVdOjs0Ooxxk+uEf+SRR7J06VIGBgZYu3Ytt9xyS6NDMrNxlLcunVyetB100kknsWzZMl72spex77778prXvKbRIZnZOCoWepm68y6NDmPc5DLh9/T0AEl3zle+8pUGR2NmjVLqy1cLP9ddOmaWb8VCwX34ZmZ50F8oMNEtfDOz9rZ1YID+UtFdOmZm7a7Ul5Qwn+guHTOz9lYs9AK4hW9m1u5K6SBFPmlro3rnO9/JrrvuysKFCxsdipnVaDDh+6Stjeqss87i+uuvb3QYZvYCbOvSmeQWfl1I+jtJ90taKekqSS35r/XII49k5513bnQYZvYC5LGFP2532kraA/gAsH9E9Er6HvBW4PJat3nBj+/nt49vzCjCxP6zduRTbzwg022aWfPZftLWLfx66QR2kNQJTAYeH+f9m5kB5Sdt3cLPXEQ8Jun/AH8CeoEbIuKGoetJOgc4B2DOnDmjbtMtcTOrVSlt4fs6/DqQ9CLgRGAeMAuYIunMoetFxKURsSQilsycOXO8wjOznClua+FPanAk42c8u3ReDzwSEesiogR8H3jVOO4/M6eddhqvfOUrWbVqFbNnz+ab3/xmo0MysyqVCr1M6Oiko7Or0aGMm/Esj/wn4BWSJpN06bwOWD6O+8/MVVdd1egQzOwFKuascBqMYws/In4FXA3cDdyX7vvS8dq/mVm5Us5KI8M4D4ASEZ8CPjWe+zQzG04ynq1b+GZmba/Y5y4dM7NcSFr4+erSccI3s1xKhjd0C9/MrO319xVyddMVOOFXbfXq1bz2ta9lwYIFHHDAAVxyySWNDsnMapDHFv64XqXTDjo7O/nCF77A4sWL2bRpE4cccgjHHHMM+++/f6NDM7MqlAq9Pmlro9t9991ZvHgxANOmTWPBggU89thjDY7KzKoREWkLP19dOq3dwr/uPHjivmy3udvL4PiLKlr10Ucf5Z577uGwww7LNgYzq6v+Yh9E0DXJLXyrQE9PD6eccgpf+tKX2HHHHRsdjplVYfvgJ27ht44KW+JZK5VKnHLKKZxxxhmcfPLJDYnBzGpXzGEtfHALv2oRwdlnn82CBQv48Ic/3OhwzKwGeayFD074Vbvtttu44oorWLZsGYsWLWLRokVce+21jQ7LzKqQ1xZ+a3fpNMARRxxBRDQ6DDN7AUo5HM8W3MI3sxzaftI2Xy18J3wzy53iYAvfl2WambW3Uk778J3wzSx3ir5Kx8wsH0p9BZDonDix0aGMKyd8M8udUqGXrkndaEK+UmC+3m0GCoUChx56KAcddBAHHHAAn/qUh+g1azXFQv6GNwRfh1+1SZMmsWzZMqZOnUqpVOKII47g+OOP5xWveEWjQzOzCpVyWAsf3MKvmiSmTp0KJDV1SqUSkhoclZlVo5jD8WyhxVv4n7vzczz4zIOZbnP+zvP52KEfG3WdgYEBDjnkEB566CHe9773uTyyWYtJhjd0C98q0NHRwYoVK1izZg133nknK1eubHRIZlaFPA5+Ai3ewh+rJV5v06dP56ijjuL6669n4cKFDY3FzCpXKhTYcZeZjQ5j3LmFX6V169axYcMGAHp7e7npppuYP39+Y4Mys6q4D98qsnbtWt7+9rczMDDA1q1bectb3sIJJ5zQ6LDMrAp5vUrHCb9KBx54IPfcc0+jwzCzF6BU6PVJWzOzdjfQX2Kgvz+XXTpO+GaWK6VCH5C/WvjghG9mOVPM6WhX4IRvZjmT11r44IRvZjlTyuloV+CEb2Y5U8zpeLbghF+zgYEBDj74YF+Db9ZiSn357cMf8zp8SXMq3NaGiNg4xramA98AFgIBvDMi7qhw+03lkksuYcGCBWzcOOpbNrMmU8xxH34lN159myQ5j1YDOIDLge+Msa1LgOsj4lRJE4HJlQTZbNasWcNPf/pTPvGJT3DxxRc3Ohwzq0Ipp+PZQgUJPyJeO3SepN0i4olqdiRpR+BI4Kx0u0WgWM02hnris5+l74FsyyNPWjCf3T7+8VHX+dCHPsQ///M/s2nTpkz3bWb156t0qvdXNbxmb2AdcJmkeyR9Q9KUoStJOkfScknL161bV2N49fOTn/yEXXfdlUMOOaTRoZhZDYo5vkqn1lo6J0raAtwYEauq2Ndi4P0R8StJlwDnAf9YvlJEXApcCrBkyZIYbYNjtcTr4bbbbuOaa67h2muvpVAosHHjRs4880yuvPLKcY/FzKpXKhTo6OqiozN/pcRqbeGfDDwEnCTpGxW+Zg2wJiJ+lT6/muQfQEu58MILWbNmDY8++ihLly7l6KOPdrI3ayGlvnwOfgI1tvAj4kng+vRR6WuekLRa0n7pt4LXAb+tZf9mZrUqFfI5vCHUmPAlfRWYEhFnSTo2Im6o8KXvB76bXqHzB+Adtey/WRx11FEcddRRjQ7DzKpQLPTmsv8eau/DLwJPptNHAxUl/IhYASypcZ9mZi9Y0sLPZ5dOrX34W4CdJHUBld6YZWbWcMWcjnYFtbfwnwF6ga8Ct2UXjplZfZUKvewwbcdGh9EQVbXwJU2XdBlwSjrrO7iLxsxaiE/aVigiNki6CJgLPA0cCHy/DnGZmdVFsdDrLp0qnA08EhE/A+7KOB4zs7oqFXwdfjWeBd4jaT/gXmBFRNyTbVjNbe7cuUybNo2Ojg46OztZvnx5o0MyswrE1q2U+tylU7GIuFDSzcDvgEUkBdFylfABbrnlFmbMmNHoMMysCqViMoC5W/gVkvRpoANYQdK6/3nGMZmZ1cW2Spm+8aoyEfFJSS8GDgZOkbRPRLwr+9DG9ovv/Y6nV/dkus0Ze07l1W/Zd9R1JHHsscciiXe/+92cc845mcZgZvVR3FYL3wm/Gu8G/i0iKq6l005uu+02Zs2axVNPPcUxxxzD/PnzOfLIIxsdlpmNIc+18KH2hP8t4L1pPfvvpiUTxt1YLfF6mTVrFgC77rorJ510EnfeeacTvlkL2FYLP6d9+LWWVvgAyT+LTuDL2YXT/DZv3rxtpKvNmzdzww03sHDhwgZHZWaVGGzhu0unOg8DLwV+FBF/l2E8Te/JJ5/kpJNOAqC/v5/TTz+d4447rsFRmVklSjlv4dea8O8HVgNnS/p8RLw8w5ia2t577829997b6DDMrAZFt/Brsi/J+LSXktyIZWbW9PLewq+1D38+yc1W5wK+JtHMWkKpb/DGq3y28GtN+NOBjwEfBQqZRWNmVkelQi/SBDq7JjY6lIaotUvn08D8iFglaWuWAZmZ1cvg4CeSGh1KQ1TUwpfUIWmtpL8GiIg1EXFTOn1ePQM0M8tKqdCb2xO2UGHCj4gBYCWwT33DMTOrn2KOSyNDdX34k4GPSlou6Zr08aN6BdbMNmzYwKmnnsr8+fNZsGABd9xxR6NDMrMKlHI8+AlU14f/yvTn4vQBENmG0xo++MEPctxxx3H11VdTLBbZsmVLo0Myswokwxvmt4VfTcKfV7coWsjGjRu59dZbufzyywGYOHEiEyfm84y/WaspFgpM3mmnRofRMBUn/Ij4Yz0DqcUtl1/KU3/8Q6bb3HWvvXntWSPfWvCHP/yBmTNn8o53vIN7772XQw45hEsuuYQpU6ZkGoeZZa9U6KXrxbs1OoyGqfU6/Nzq7+/n7rvv5r3vfS/33HMPU6ZM4aKLLmp0WGZWgWKOhzeE2q/DbwqjtcTrZfbs2cyePZvDDjsMgFNPPdUJ36xF5P2kbdUtfElvrEcgrWK33XZjzz33ZNWqVQDcfPPN7L///g2OyszGEhGUCoXcDm8ItbXwPwP8OOtAWsm//Mu/cMYZZ1AsFtl777257LLLGh2SmY1hoL+frQMDvkqnSvm8J7nMokWLWL58eaPDMLMqbK+UmX0LPyK48cYbefbZbIoHd3d3c+KJJ2ayrXK1JPxcXntvZq2tnuPZbtmyhdtvv51p06bRncH2J0+enEFUz9fSJ23NzCo1OJ5tPbp0enp6ADjuuOM44IADMt9+VnxZppnlQj1b+IMJf+rUqZlvO0u1JPwnM4/CzKzOtrXwJ9Wvhd92CT8ijqlHIGZm9eQWvrt0zCwnSn2DCb8+Lfyurq6mr6vlhF+lVatWsWjRom2PHXfckS996UuNDsvMxjDYwq9HaYWenh6mTp3a9CNp1XSVjqQPR8TF6fR+EbGqitd2AMuBxyLihFr230j77bcfK1asAGBgYIA99tiDk046qbFBmdmYituuw69PC7/Zu3OgyoQvaTrwRWC+pALwG+Bs4B1VbOaDwAPAjtXsuxndfPPN7LPPPuy1116NDsXMxrC9D39S5tvu6elhxowZmW83a1Ul/IjYALxD0p8DTwDHAt+v9PWSZgN/TlKe4cPV7Hs4G378MMXHN7/QzTzHxFlTmP7GykZyXLp0Kaeddlqm+zez+igWeumcOIkJEzoy33ZPTw9z587NfLtZq7UP/zUkl2e+Aqjmqp0vAR8Fto60gqRz0mEUl69bt67G8OqvWCxyzTXX8OY3v7nRoZhZBUqFQl2u0Onv76e3t7f9unTKTAc+RpK8z67kBZJOAJ6KiLskHTXSehFxKXApwJIlS0Yt41BpS7werrvuOhYvXsyLX/zihsVgZpUrFXrrcsJ28+akl6EVBkGqNeF/GpgfEaskjdhaH+Jw4C8kvQHoBnaUdGVEnFljDA111VVXuTvHrIUUC4W6nbCF5r8GH2rs0omINRFxUzp9XoWv+fuImB0Rc4G3AstaNdlv2bKFG2+8kZNPPrnRoZhZhUp99enSafuEL+mrki5Pp4/NNKIWMHnyZNavX89OOR4M2azVFAu9dS2c1rYJHygCg6OHH13tiyPi5614Db6Zta5ktKv6XJIJ7Z3wtwA7SeoC5mQYj5lZXSTj2Wbfwt+8eTPd3d10djZ/tflaI3wG6AW+CtyWXThmZvVRLBTqWlahFVTVwpc0XdJlwCnprO8ASzKPyswsY6U6XqXTKgm/6jttJV0EzAWeBg6kijttzcwaYevWAfqLfXRNqk8Lf9asWZlvtx5q6dI5G3gkIn4G3JVxPGZmmSsV+oD6VspsBbWctH0WeI+kL0l6h6SDsw6q2X3xi1/kgAMOYOHChZx22mkU0qJMZtacSnWqlNnX10exWGzfhB8RFwLvAs4HHgGOzDimpvbYY4/x5S9/meXLl7Ny5UoGBgZYunRpo8Mys1EU61QLf7CsQqsk/Kq7dCR9GugAVgArIuLnGcfU9AaLJXV1dbFly5aW6b8zy6t6tfBb6Rp8qCHhR8QnJX2S5NvBKZL2iYh3ZR/a2K677jqeeOKJTLe52267cfzxx4+4fI899uDcc89lzpw57LDDDhx77LEce2zubjY2aynbhzfMtoXfagm/1huvvgUsAHYBvpZdOM3v2Wef5Uc/+hGPPPIIjz/+OJs3b+bKK69sdFhmNortwxu6hV+LD5CUV+gELqFB/fijtcTr5aabbmLevHnMnDkTgJNPPpnbb7+dM89syTpwZrlQLNSvhS+JyZMnZ7rdeqm1hf8wSYnjH0VErk7azpkzh1/+8pds2bKFiODmm29mwYIFjQ7LzEYx2Idfjxb+lClTmDCh1lQ6vmqN8n5gGXC2pF9nGE/TO+ywwzj11FNZvHgxL3vZy9i6dSvnnHNOo8Mys1HUs4XfKt05UHuXzj4k1+Nfmv7MlQsuuIALLrig0WGYWYXqeZVOK4x0NajWhL86IpZJ2h14KsuAzMyyVuorMKGjg46MK1r29PRsO5/XCmrt0jlO0mzg/wJfzDAeM7PMFQu9dHV3IymzbUZEy3Xp1Jrwp7N9EPO+zKKpUMSoY5s3XLPHZ5Y39aiU2dvby9atW3OR8D9NcoXOKmAgw3jG1N3dzfr165s2qUYE69evp7sORZrMrDbFQoGJGVfKbLVr8KHCPnxJHcAa4B8j4hsRsSZ9XvEg5lmZPXs2a9asYd26deO526p0d3cze/bsRodhZqlS2qWTpVarowMVJvyIGJC0kuTqnIbq6upi3rx5jQ7DzFpI0qXjFn41p6wnAx+VdAzweDovIuLE7MMyM8tOsdDL1BftnOk22z3hvzL9uTh9ADRnR7qZWZlSoZD5aFc9PT10dHS01Pm6ahK++1HMrCUlffjZ33Q1derUTC/1rLcxE76kOenksK35suUbImJjVoGZmWWlWChkPvhJq12DD5W18L9NkuxH+zcWwOXAdzKIycwsMxFRl+vwe3p6mD59eqbbrLcxE35EvHY8AjEzq4f+UpGIrXW5SqfVLr9ujZqeZmY1KtVhPNuBgQE2b97ccl06Tvhm1tZK20ojZ9els2XLFqC1LskEJ3wza3PbBz/JroXfitfggxO+mbW5Yh1a+E74ZmZNqFSH0a6c8M3MmlCxL/vxbAcTfiuNdgVO+GbW5urVwp84cSITJ07MbJvjwQnfzNra9pO22bbwW607B5zwzazNFevUwnfCH4WkPSXdIukBSfdL+uB47dvM8muwhd81cVJm23TCH1s/8JGIWAC8AnifpP3Hcf9mlkPFtDSyJmSX7pzwxxARayPi7nR6E/AAsMd47d/M8inr4Q1LpRJ9fX1O+JWSNBc4GPjVMMvOkbRc0vJmHrfWzFpD1sMbtuJYtoPGPeFLmgr8J/Ch4ernR8SlEbEkIpbMnDlzvMMzszZTLBSYmOFoV6160xWMc8KX1EWS7L8bEd8fz32bWT5lPdqVE34FlIwD9k3ggYi4eLz2a2b5lnWXjhN+ZQ4H3gYcLWlF+njDOO7fzHKoWOh1WYVUNYOYvyAR8d+MPkyimVnmSn3Zt/AnT55MR0dHZtscL77T1szaWjHj8Wxb9Rp8cMI3szbXXyhkPviJE76ZWZPZOjBAf6noOjopJ3wza1ulvsEBzLPp0okIJ3wzs2ZUHCycllELv6+vj/7+fid8M7NmU8p4PNtWviQTnPDNrI0NJvysTtq28k1X4IRvZm1sW5fOpGxb+E74ZmZNxi3853LCN7O2tf2kbXYt/AkTJrDDDtndyDWenPDNrG2VMh7PtqenhylTpjAhw9GzxlNrRm1mVoHB8Wyzug5/8+bNLdudA074ZtbGitta+NkMYN7KN12BE76ZtbFSoZcJHZ10dHZlsj0nfDOzJlXMsHDa1q1bnfDNzJpVKcPSyL29vUSEE76ZWTNKxrP1NfiDnPDNrG0V+7Lr0nHCNzNrYkkL32UVBjnhm1nbSoY3dAt/kBO+mbWt/r5CZjdd9fT00NXVxcSJEzPZXiM44ZtZ28q6hT916lQkZbK9RnDCN7O2VSr0ZnrStpW7c8AJ38zaVESkLfzsunSc8M3MmlB/sQ8i6JqUbaXMVuaEb2ZtafvgJy+8hd/f309vb69b+GZmzaiYYS38zZs3A619SSY44ZtZm8qyFn47XIMPTvhm1qaybOE74ZuZNbFShuPZukvHzKyJbRvPdtILH+3KLXwzsyZWzLgPv7u7m87Ozhe8rUZywjeztlTKuA+/1Vv34IRvZm0q6xa+E76ZWZMq9RVAojOD6pZO+GZmTaxU6KVrUjea8MLTnBN+DSQdJ2mVpIcknTee+zazfCkWshnesK+vj2Kx6IRfDUkdwFeB44H9gdMk7T9e+zezfCllVAu/Xa7BBxjPa4wOBR6KiD8ASFoKnAj8Nusd/Z9P/BOa0JH1Zs2s1ew4jy/84+de0CYGtBUmwFPffZDffPuJjAIb3ab+Zzj8X07PfLvjmfD3AFaXPV8DHDZ0JUnnAOcAzJkzp6YdTR7oojNadxgyM8uIJqAMOjJm9u/ILv1u4VdjuHHB4nkzIi4FLgVYsmTJ85ZX4m8u8ukBM7OhxvOk7Rpgz7Lns4HHx3H/Zma5Np4J/9fASyXNkzQReCtwzTju38ws18atSyci+iX9LfAzoAP4VkTcP177NzPLu3GtBBQR1wLXjuc+zcws4TttzcxywgnfzCwnnPDNzHLCCd/MLCcUUdO9TeNC0jrgjzW+fAbwdIbh1IvjzFYrxNkKMYLjzNp4xblXRMwcbkFTJ/wXQtLyiFjS6DjG4jiz1QpxtkKM4Diz1gxxukvHzCwnnPDNzHKinRP+pY0OoEKOM1utEGcrxAiOM2sNj7Nt+/DNzOy52rmFb2ZmZZzwzcxyou0SfjMPlC7pUUn3SVohaXk6b2dJN0r6ffrzRQ2I61uSnpK0smzeiHFJ+vv0+K6S9GcNjvN8SY+lx3SFpDc0QZx7SrpF0gOS7pf0wXR+Ux3TUeJsqmMqqVvSnZLuTeO8IJ3fNMdzlBib6lgSEW3zICm7/DCwNzARuBfYv9FxlcX3KDBjyLx/Bs5Lp88DPteAuI4EFgMrx4qLZAD6e4FJwLz0eHc0MM7zgXOHWbeRce4OLE6npwG/S+NpqmM6SpxNdUxJRsubmk53Ab8CXtFMx3OUGJvqWLZbC3/bQOkRUQQGB0pvZicC306nvw28abwDiIhbgWeGzB4prhOBpRHRFxGPAA+RHPdGxTmSRsa5NiLuTqc3AQ+QjOncVMd0lDhH0qg4IyJ60qdd6SNoouM5SowjacixbLeEP9xA6aP9Ao+3AG6QdFc6WDvAiyNiLSR/gMCuDYvuuUaKqxmP8d9K+k3a5TP4tb4p4pQ0FziYpMXXtMd0SJzQZMdUUoekFcBTwI0R0XTHc4QYoYmOZbsl/IoGSm+gwyNiMXA88D5JRzY6oBo02zH+V2AfYBGwFvhCOr/hcUqaCvwn8KGI2DjaqsPMG7dYh4mz6Y5pRAxExCKSsbAPlbRwlNUbEucIMTbVsWy3hN/UA6VHxOPpz6eAH5B8hXtS0u4A6c+nGhfhc4wUV1Md44h4Mv1D2wp8ne1fixsap6QukiT63Yj4fjq76Y7pcHE26zFNY9sA/Bw4jiY8nkNjbLZj2W4Jv2kHSpc0RdK0wWngWGAlSXxvT1d7O/CjxkT4PCPFdQ3wVkmTJM0DXgrc2YD4gG1/6INOIjmm0MA4JQn4JvBARFxctqipjulIcTbbMZU0U9L0dHoH4PXAgzTR8RwpxmY7lnU9I9yIB/AGkqsNHgY+0eh4yuLam+Ss/L3A/YOxAbsANwO/T3/u3IDYriL5ulkiaXmcPVpcwCfS47sKOL7BcV4B3Af8huSPaPcmiPMIkq/nvwFWpI83NNsxHSXOpjqmwIHAPWk8K4FPpvOb5niOEmNTHUuXVjAzy4l269IxM7MROOGbmeWEE76ZWU444ZuZ5YQTvplZTjjhWy5Imi7pb8qez5J0dZ329SZJnxxhWU/6c6ak6+uxf7OROOFbXkwHtiX8iHg8Ik6t074+CnxttBUiYh2wVtLhdYrB7Hmc8C0vLgL2SWuSf17SXKV19SWdJemHkn4s6RFJfyvpw5LukfRLSTun6+0j6fq0+N0vJM0fuhNJ+wJ9EfF0+nyepDsk/VrSPw1Z/YfAGXV912ZlnPAtL84DHo6IRRHxv4ZZvhA4naTWyWeALRFxMHAH8FfpOpcC74+IQ4BzGb4Vfzhwd9nzS4B/jYiXA08MWXc58Ooa349Z1TobHYBZk7glkprwmyT9D/DjdP59wIFpRclXAf+RlKABksErhtodWFf2/HDglHT6CuBzZcueAmZlE77Z2JzwzRJ9ZdNby55vJfk7mQBsiKT87Wh6gZ2GzBupfkl3ur7ZuHCXjuXFJpJh/GoSSZ34RyS9GZJKk5IOGmbVB4CXlD2/jaRqKzy/v35ftldPNKs7J3zLhYhYD9wmaaWkz9e4mTOAsyUNVjwdbvjMW4GDtb3f54Mkg938mue3/F8L/LTGWMyq5mqZZhmTdAnw44i4aYz1bgVOjIhnxycyyzu38M2y91lg8mgrSJoJXOxkb+PJLXwzs5xwC9/MLCec8M3McsIJ38wsJ5zwzcxywgnfzCwn/j860rbq/cUTsgAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -935,7 +935,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -970,7 +970,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in index eeccf8904..c7cf002d6 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/tp.in @@ -1,49 +1,49 @@ 16 101 -0.3424462557168864163 0.04544165874508511449 -0.027698852186471431547 --0.006531907080964799092 0.029147783460550278495 0.003219860945895814102 +0.33208578766229190915 0.07439013071780828379 -0.02438290851908785084 +-0.008988542188201206762 0.028710618792657981169 0.0034094833969203438596 102 -0.3424001343042231693 0.045395537332421811993 -0.027698852186471431547 --0.0117390060249831038736 0.029147783460550278495 0.003219860945895814102 +0.33203966624962866216 0.07434400930514498129 -0.02438290851908785084 +-0.014195641132219511543 0.028710618792657981169 0.0034094833969203438596 103 --0.7186837221942969922 0.0085173318981578965275 0.041591140610292232083 -0.0059917264909741391188 -0.020314924633110978403 -0.00025828764648639637377 +-0.7187543234391324809 -0.011798260816488121555 0.041316403191083782287 +0.0065615071841567274707 -0.020313576971905909774 -0.00029114855617710840843 104 --0.7187981427752414554 0.008402911317213499279 0.041591140610292232083 --0.0067027409197166487598 -0.020314924633110978403 -0.00025828764648639637377 +-0.71886874402007694407 -0.011912681397432518804 0.041316403191083782287 +-0.006132960226534060408 -0.020313576971905909774 -0.00029114855617710840843 105 -0.34095157236971712633 -0.9576722335237045636 4.435598231277717939e-05 -0.022822732530282826419 0.005704842145070231768 -3.222239146362504855e-07 +0.35683111163121072895 -0.9518327808922094624 4.4027442504036787155e-05 +0.022724479262608666269 0.0059737936889703449964 -3.3484113013969089573e-07 106 -0.34083111655783809857 -0.95779268933558359134 4.435598231277717939e-05 -0.009033852061735073852 0.005704842145070231768 -3.222239146362504855e-07 +0.3567106558193317012 -0.95195323670408849015 4.4027442504036787155e-05 +0.008935598794060913702 0.0059737936889703449964 -3.3484113013969089573e-07 107 --1.518162912371189055 0.68400065909469953684 0.051574975426518870902 --0.0021454091976326134308 -0.011564320429164449966 -0.0001141828894241637938 +-1.5233391647104730371 0.6724145771476651712 0.051459143378398922164 +-0.0020480822268840624331 -0.011607719813367209372 -0.000117479966462153095864 108 --1.5182269971986968038 0.68393657426719178805 0.051574975426518870902 --0.008304367394080400255 -0.011564320429164449966 -0.0001141828894241637938 +-1.5234032495379807859 0.6723504923201574224 0.051459143378398922164 +-0.008207040423331847523 -0.011607719813367209372 -0.000117479966462153095864 109 -4.0462039233401467797 -2.9968556860684887333 -0.07806209765007877943 -0.041288813494489193245 0.006425243736188544774 -0.00012527374697365590813 +4.050605826355517358 -2.9904269687677218492 -0.078187280837353656526 +0.041279424970441319642 0.006432188574295680597 -0.00012509257442073270106 110 -4.0448821253239524154 -2.9981774840846830976 -0.07806209765007877943 --0.03247562090880566632 0.006425243736188544774 -0.00012527374697365590813 +4.049284028339322994 -2.9917487667839162135 -0.078187280837353656526 +-0.032485009432853539924 0.006432188574295680597 -0.00012509257442073270106 111 -6.295464977775925064 -7.7093855974615586035 -0.11647820911165690516 -0.026129138119387516903 0.0035219001519798780186 -0.00022100689998454499602 +6.299479995832536261 -7.7058625321556393217 -0.11669919842191249504 +0.02612723553831041573 0.0035242303011843410798 -0.00022097170940726839814 112 -6.2943639930656640757 -7.7104865821718195917 -0.11647820911165690516 --0.018097199647679661216 0.0035219001519798780186 -0.00022100689998454499602 +6.2983790111222752728 -7.70696351686590031 -0.11669919842191249504 +-0.01809910222875676239 0.0035242303011843410798 -0.00022097170940726839814 113 -14.858937443026691838 13.005046650478242043 -0.14422203290693380584 -0.0104795161786612953114 0.0027826291421300451516 4.4072431030456472162e-05 +14.856321905516212567 13.007829033301401722 -0.14417795763685259391 +0.010478935887110856981 0.0027821364817078499815 4.40781085949555924e-05 114 -14.858457927052286962 13.004567134503837167 -0.14422203290693380584 --0.01571001089866249159 0.0027826291421300451516 4.4072431030456472162e-05 +14.855842389541807691 13.007349517326996846 -0.14417795763685259391 +-0.015710591190212928187 0.0027821364817078499815 4.40781085949555924e-05 115 -29.557212398525788188 -4.6322721717265853414 -0.5858344271811812831 -0.01490584566440259634 0.0031273464291932001093 -7.514820514613305166e-05 +29.55768244045575699 -4.6291447957067299868 -0.58590957207831262377 +0.014905509815736753265 0.0031274056019462009859 -7.51415892482447254e-05 116 -29.556746873633354511 -4.632737696619015466 -0.5858344271811812831 --0.013965425962153665829 0.0031273464291932001093 -7.514820514613305166e-05 +29.557216915563323312 -4.6296103205991601115 -0.58590957207831262377 +-0.0139657618108195089035 0.0031274056019462009859 -7.51415892482447254e-05 From 8e4e7d73a2c2f2bd2efd3e4a816b41e3db448584 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 05:55:56 -0400 Subject: [PATCH 20/23] Restructured util functions to be defined under swiftest_classes. Removed obsolete util_hills subroutine that was causing problems when switching back to calculating rhill once for WHM/RMVS --- Makefile | 1 - .../9pl_18tp_encounters/cb.swiftest.in | 4 +- .../9pl_18tp_encounters/param.swifter.in | 4 +- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 404 +----------------- src/discard/discard.f90 | 46 +- src/io/io.f90 | 51 ++- src/modules/swiftest.f90 | 1 - src/modules/swiftest_classes.f90 | 116 +++-- src/modules/util.f90 | 96 ----- src/rmvs/rmvs_setup.f90 | 2 +- src/rmvs/rmvs_step.f90 | 1 - src/symba/symba_io.f90 | 8 +- src/util/util_exit.f90 | 50 ++- src/util/util_get.f90 | 77 ---- src/util/util_hills.f90 | 32 -- src/util/util_index.f90 | 137 +++--- src/util/util_peri.f90 | 137 +++--- src/util/util_reverse_status.f90 | 6 +- src/util/util_sort.f90 | 263 ++++++++++++ src/util/util_sort_dp.f90 | 86 ---- src/util/util_sort_i4b.f90 | 85 ---- src/util/util_sort_sp.f90 | 86 ---- src/util/util_toupper.f90 | 24 -- src/util/util_valid.f90 | 66 +-- src/util/util_version.f90 | 6 +- src/whm/whm_setup.f90 | 2 +- src/whm/whm_step.f90 | 1 - 27 files changed, 633 insertions(+), 1159 deletions(-) delete mode 100644 src/modules/util.f90 delete mode 100644 src/util/util_get.f90 delete mode 100644 src/util/util_hills.f90 create mode 100644 src/util/util_sort.f90 delete mode 100644 src/util/util_sort_dp.f90 delete mode 100644 src/util/util_sort_i4b.f90 delete mode 100644 src/util/util_sort_sp.f90 delete mode 100644 src/util/util_toupper.f90 diff --git a/Makefile b/Makefile index a49f80756..0e2b361e6 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,6 @@ SWIFTEST_MODULES = swiftest_globals.f90 \ rmvs_classes.f90 \ helio_classes.f90 \ symba_classes.f90 \ - util.f90 \ module_nrutil.f90 \ swiftest.f90 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in index 2e8d49f62..81c636655 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/cb.swiftest.in @@ -1,5 +1,5 @@ 0 0.00029591220819207774 0.004650467260962157 -0.0 -0.0 +4.7535806948127355e-12 +-2.2473967953572827e-18 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in index 627edf452..ab8bf65ca 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in @@ -21,6 +21,6 @@ CHK_QMIN_RANGE 0.004650467260962157 1000.0 EXTRA_FORCE NO BIG_DISCARD NO CHK_CLOSE YES -J2 0.0 -J4 0.0 +J2 4.7535806948127355e-12 +J4 -2.2473967953572827e-18 RHILL_PRESENT YES diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index 69f51f7d5..e8d0dbc26 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -100,391 +100,7 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.DataArray 'id' (id: 24)>\n",
    -       "array([  1,   2,   3,   4,   5,   6,   7,   8, 101, 102, 103, 104, 105, 106,\n",
    -       "       107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n",
    -       "Coordinates:\n",
    -       "  * id       (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116
    " - ], - "text/plain": [ - "\n", - "array([ 1, 2, 3, 4, 5, 6, 7, 8, 101, 102, 103, 104, 105, 106,\n", - " 107, 108, 109, 110, 111, 112, 113, 114, 115, 116])\n", - "Coordinates:\n", - " * id (id) int64 1 2 3 4 5 6 7 8 101 ... 109 110 111 112 113 114 115 116" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swiftdiff.id" - ] - }, - { - "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -845,28 +461,28 @@ "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", - " id int64 4\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
  • " ], "text/plain": [ "\n", "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", "Coordinates:\n", - " id int64 4\n", + " id int64 101\n", " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0" ] }, - "execution_count": 9, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "swiftdiff['px'].sel(id=4)" + "swiftdiff['px'].sel(id=102)" ] }, { @@ -935,7 +551,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -970,7 +586,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] diff --git a/src/discard/discard.f90 b/src/discard/discard.f90 index 1a1aecea6..f82826fac 100644 --- a/src/discard/discard.f90 +++ b/src/discard/discard.f90 @@ -129,35 +129,29 @@ subroutine discard_peri_tp(tp, system, param) real(DP) :: r2 real(DP), dimension(NDIM) :: dx - associate(cb => system%cb, ntp => tp%nbody, pl => system%pl, npl => system%pl%nbody, qmin_coord => param%qmin_coord, t => param%t, msys => system%msys) - if (lfirst) then - call util_hills(npl, pl) - call util_peri(lfirst, ntp, tp, cb%Gmass, msys, param%qmin_coord) - lfirst = .false. - else - call util_peri(lfirst, ntp, tp, cb%Gmass, msys, param%qmin_coord) - do i = 1, ntp - if (tp%status(i) == ACTIVE) then - if (tp%isperi(i) == 0) then - ih = 1 - do j = 1, npl - dx(:) = tp%xh(:, i) - pl%xh(:, j) - r2 = dot_product(dx(:), dx(:)) - if (r2 <= (pl%rhill(j))**2) ih = 0 - end do - if (ih == 1) then - if ((tp%atp(i) >= param%qmin_alo) .and. & - (tp%atp(i) <= param%qmin_ahi) .and. & - (tp%peri(i) <= param%qmin)) then - tp%status(i) = DISCARDED_PERI - write(*, *) "Particle ", tp%id(i), " perihelion distance too small at t = ", t - tp%ldiscard(i) = .true. - end if + associate(cb => system%cb, ntp => tp%nbody, pl => system%pl, npl => system%pl%nbody, t => param%t) + call tp%get_peri(system, param) + do i = 1, ntp + if (tp%status(i) == ACTIVE) then + if (tp%isperi(i) == 0) then + ih = 1 + do j = 1, npl + dx(:) = tp%xh(:, i) - pl%xh(:, j) + r2 = dot_product(dx(:), dx(:)) + if (r2 <= (pl%rhill(j))**2) ih = 0 + end do + if (ih == 1) then + if ((tp%atp(i) >= param%qmin_alo) .and. & + (tp%atp(i) <= param%qmin_ahi) .and. & + (tp%peri(i) <= param%qmin)) then + tp%status(i) = DISCARDED_PERI + write(*, *) "Particle ", tp%id(i), " perihelion distance too small at t = ", t + tp%ldiscard(i) = .true. end if end if end if - end do - end if + end if + end do end associate return diff --git a/src/io/io.f90 b/src/io/io.f90 index 8e8643ac0..d04e10466 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -41,7 +41,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) ! Read the pair of tokens. The first one is the parameter name, the second is the value. param_name = io_get_token(line_trim, ifirst, ilast, iostat) if (param_name == '') cycle ! No parameter name (usually because this line is commented out) - call util_toupper(param_name) + call io_toupper(param_name) ifirst = ilast + 1 param_value = io_get_token(line_trim, ifirst, ilast, iostat) select case (param_name) @@ -61,25 +61,25 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("TP_IN") self%intpfile = param_value case ("IN_TYPE") - call util_toupper(param_value) + call io_toupper(param_value) self%in_type = param_value case ("ISTEP_OUT") read(param_value, *) self%istep_out case ("BIN_OUT") self%outfile = param_value case ("OUT_TYPE") - call util_toupper(param_value) + call io_toupper(param_value) self%out_type = param_value case ("OUT_FORM") - call util_toupper(param_value) + call io_toupper(param_value) self%out_form = param_value case ("OUT_STAT") - call util_toupper(param_value) + call io_toupper(param_value) self%out_stat = param_value case ("ISTEP_DUMP") read(param_value, *) self%istep_dump case ("CHK_CLOSE") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lclose = .true. case ("CHK_RMIN") read(param_value, *) self%rmin @@ -90,7 +90,7 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("CHK_QMIN") read(param_value, *) self%qmin case ("CHK_QMIN_COORD") - call util_toupper(param_value) + call io_toupper(param_value) self%qmin_coord = param_value case ("CHK_QMIN_RANGE") read(param_value, *) self%qmin_alo @@ -100,13 +100,13 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("ENC_OUT") self%encounter_file = param_value case ("EXTRA_FORCE") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lextra_force = .true. case ("BIG_DISCARD") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T' ) self%lbig_discard = .true. case ("RHILL_PRESENT") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T' ) self%lrhill_present = .true. case ("MU2KG") read(param_value, *) self%MU2KG @@ -115,10 +115,10 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("DU2M") read(param_value, *) self%DU2M case ("ENERGY") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lenergy = .true. case ("GR") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lgr = .true. case ("NPLMAX", "NTPMAX", "MTINY", "PARTICLE_FILE", "ROTATION", "TIDES", "FRAGMENTATION", "SEED", "YARKOVSKY", "YORP") ! Ignore SyMBA-specific, not-yet-implemented, or obsolete input parameters case default @@ -470,7 +470,7 @@ module function io_get_args(integrator, param_file_name) result(ierr) call get_command_argument(2, arg2, status = ierr_arg2) if ((ierr_arg1 == 0) .and. (ierr_arg2 == 0)) then ierr = 0 - call util_toupper(arg1) + call io_toupper(arg1) select case(arg1) case('BS') integrator = BS @@ -952,6 +952,31 @@ module subroutine io_read_initialize_system(self, param) end subroutine io_read_initialize_system + module subroutine io_toupper(string) + !! author: David A. Minton + !! + !! Convert string to uppercase + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_toupper.f90 + implicit none + ! Arguments + character(*), intent(inout) :: string !! String to make upper case + ! Internals + integer(I4B) :: i, length, idx + + length = len(string) + do i = 1, length + idx = iachar(string(i:i)) + if ((idx >= lowercase_begin) .and. (idx <= lowercase_end)) then + idx = idx + uppercase_offset + string(i:i) = achar(idx) + end if + end do + + return + + end subroutine io_toupper + module subroutine io_write_discard(self, param) !! author: David A. Minton !! diff --git a/src/modules/swiftest.f90 b/src/modules/swiftest.f90 index dcc8dc875..fd8ffaf1b 100644 --- a/src/modules/swiftest.f90 +++ b/src/modules/swiftest.f90 @@ -10,7 +10,6 @@ module swiftest use rmvs_classes use helio_classes use symba_classes - use util use module_nrutil !use advisor_annotate !$ use omp_lib diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index e4d967d19..a5885255c 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -12,15 +12,15 @@ module swiftest_classes public :: gr_getaccb_ns_body, gr_p4_pos_kick, gr_pseudovel2vel, gr_vel2pseudovel public :: io_dump_param, io_dump_swiftest, io_dump_system, io_get_args, io_get_token, io_param_reader, io_param_writer, io_read_body_in, & io_read_cb_in, io_read_param_in, io_read_frame_body, io_read_frame_cb, io_read_frame_system, io_read_initialize_system, & - io_write_discard, io_write_encounter, io_write_frame_body, io_write_frame_cb, io_write_frame_system + io_toupper, io_write_discard, io_write_encounter, io_write_frame_body, io_write_frame_cb, io_write_frame_system public :: kickvh_body public :: obl_acc_body, obl_acc_pl, obl_acc_tp public :: orbel_el2xv_vec, orbel_xv2el_vec, orbel_scget, orbel_xv2aeq, orbel_xv2aqt public :: setup_body, setup_construct_system, setup_pl, setup_tp public :: user_getacch_body - public :: util_coord_b2h_pl, util_coord_b2h_tp, util_coord_h2b_pl, util_coord_h2b_tp, util_fill_body, util_fill_pl, util_fill_tp, & - util_reverse_status, util_set_beg_end_cb, util_set_beg_end_pl, util_set_ir3h, util_set_msys, util_set_mu_pl, & - util_set_mu_tp, util_set_rhill, util_spill_body, util_spill_pl, util_spill_tp + public :: util_coord_b2h_pl, util_coord_b2h_tp, util_coord_h2b_pl, util_coord_h2b_tp, util_exit, util_fill_body, util_fill_pl, util_fill_tp, & + util_index, util_peri_tp, util_reverse_status, util_set_beg_end_cb, util_set_beg_end_pl, util_set_ir3h, util_set_msys, util_set_mu_pl, & + util_set_mu_tp, util_set_rhill, util_sort, util_spill_body, util_spill_pl, util_spill_tp, util_valid, util_version !******************************************************************************************************************************** ! swiftest_parameters class definitions @@ -236,6 +236,7 @@ module swiftest_classes procedure, public :: h2b => util_coord_h2b_tp !! Convert test particles from heliocentric to barycentric coordinates (position and velocity) procedure, public :: b2h => util_coord_b2h_tp !! Convert test particles from barycentric to heliocentric coordinates (position and velocity) procedure, public :: fill => util_fill_tp !! "Fills" bodies from one object into another depending on the results of a mask (uses the MERGE intrinsic) + procedure, public :: get_peri => util_peri_tp !! Determine system pericenter passages for test particles procedure, public :: spill => util_spill_tp !! "Spills" bodies from one object to another depending on the results of a mask (uses the PACK intrinsic) end type swiftest_tp @@ -546,6 +547,11 @@ module subroutine io_write_discard(self, param) class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine io_write_discard + module subroutine io_toupper(string) + implicit none + character(*), intent(inout) :: string !! String to make upper case + end subroutine io_toupper + module subroutine io_write_encounter(t, name1, name2, mass1, mass2, radius1, radius2, & xh1, xh2, vh1, vh2, encounter_file, out_type) implicit none @@ -650,34 +656,6 @@ module subroutine setup_pl(self,n) integer, intent(in) :: n !! Number of massive bodies to allocate space for end subroutine setup_pl - module subroutine util_set_ir3h(self) - implicit none - class(swiftest_body), intent(inout) :: self !! Swiftest body object - end subroutine util_set_ir3h - - module subroutine util_set_msys(self) - implicit none - class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object - end subroutine util_set_msys - - module subroutine util_set_mu_pl(self, cb) - implicit none - class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object - class(swiftest_cb), intent(inout) :: cb !! Swiftest central body object - end subroutine util_set_mu_pl - - module subroutine util_set_mu_tp(self, cb) - implicit none - class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object - class(swiftest_cb), intent(inout) :: cb !! Swiftest central body object - end subroutine util_set_mu_tp - - module subroutine util_set_rhill(self,cb) - implicit none - class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object - class(swiftest_cb), intent(inout) :: cb !! Swiftest massive body object - end subroutine util_set_rhill - module subroutine setup_tp(self, n) implicit none class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object @@ -717,6 +695,11 @@ module subroutine util_coord_h2b_tp(self, cb) class(swiftest_cb), intent(in) :: cb !! Swiftest central body object end subroutine util_coord_h2b_tp + module subroutine util_exit(code) + implicit none + integer(I4B), intent(in) :: code !! Failure exit code + end subroutine util_exit + module subroutine util_fill_body(self, inserts, lfill_list) implicit none class(swiftest_body), intent(inout) :: self !! Swiftest body object @@ -738,6 +721,19 @@ module subroutine util_fill_tp(self, inserts, lfill_list) logical, dimension(:), intent(in) :: lfill_list !! Logical array of bodies to merge into the keeps end subroutine util_fill_tp + module subroutine util_index(arr, index) + implicit none + integer(I4B), dimension(:), intent(out) :: index + real(DP), dimension(:), intent(in) :: arr + end subroutine util_index + + module subroutine util_peri_tp(self, system, param) + implicit none + class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + end subroutine util_peri_tp + module subroutine util_reverse_status(self) implicit none class(swiftest_body), intent(inout) :: self !! Swiftest body object @@ -758,6 +754,53 @@ module subroutine util_set_beg_end_pl(self, xbeg, xend, vbeg) real(DP), dimension(:,:), intent(in), optional :: vbeg !! vbeg is an unused variable to keep this method forward compatible with RMVS end subroutine util_set_beg_end_pl + module subroutine util_set_ir3h(self) + implicit none + class(swiftest_body), intent(inout) :: self !! Swiftest body object + end subroutine util_set_ir3h + + module subroutine util_set_msys(self) + implicit none + class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object + end subroutine util_set_msys + + module subroutine util_set_mu_pl(self, cb) + implicit none + class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object + class(swiftest_cb), intent(inout) :: cb !! Swiftest central body object + end subroutine util_set_mu_pl + + module subroutine util_set_mu_tp(self, cb) + implicit none + class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object + class(swiftest_cb), intent(inout) :: cb !! Swiftest central body object + end subroutine util_set_mu_tp + + module subroutine util_set_rhill(self,cb) + implicit none + class(swiftest_pl), intent(inout) :: self !! Swiftest massive body object + class(swiftest_cb), intent(inout) :: cb !! Swiftest massive body object + end subroutine util_set_rhill + end interface + + interface util_sort + module subroutine util_sort_i4b(arr) + implicit none + integer(I4B), dimension(:), intent(inout) :: arr + end subroutine util_sort_i4b + + module subroutine util_sort_sp(arr) + implicit none + real(SP), dimension(:), intent(inout) :: arr + end subroutine util_sort_sp + + module subroutine util_sort_dp(arr) + implicit none + real(DP), dimension(:), intent(inout) :: arr + end subroutine util_sort_dp + end interface + + interface module subroutine util_spill_body(self, discards, lspill_list) implicit none class(swiftest_body), intent(inout) :: self !! Swiftest body object @@ -779,6 +822,15 @@ module subroutine util_spill_tp(self, discards, lspill_list) logical, dimension(:), intent(in) :: lspill_list !! Logical array of bodies to spill into the discards end subroutine util_spill_tp + module subroutine util_valid(pl, tp) + implicit none + class(swiftest_pl), intent(in) :: pl + class(swiftest_tp), intent(in) :: tp + end subroutine util_valid + + module subroutine util_version() + implicit none + end subroutine util_version end interface end module swiftest_classes diff --git a/src/modules/util.f90 b/src/modules/util.f90 deleted file mode 100644 index 874d20789..000000000 --- a/src/modules/util.f90 +++ /dev/null @@ -1,96 +0,0 @@ -module util - use swiftest_globals - use swiftest_classes - implicit none - interface - - module subroutine util_exit(code) - implicit none - integer(I4B), intent(in) :: code - end subroutine util_exit - - module subroutine util_get_energy_and_momentum(self) - implicit none - class(swiftest_nbody_system), intent(inout) :: self !! Swiftest system object - end subroutine util_get_energy_and_momentum - - module subroutine util_hills(npl, swiftest_plA) - implicit none - integer(I4B), intent(in) :: npl - class(swiftest_pl), intent(inout) :: swiftest_plA - end subroutine util_hills - - module subroutine util_index(arr, index) - implicit none - integer(I4B), dimension(:), intent(out) :: index - real(DP), dimension(:), intent(in) :: arr - end subroutine util_index - - module subroutine util_peri(lfirst, ntp, tp, mu, msys, qmin_coord) - logical, intent(in) :: lfirst !! Logical flag indicating whether current invocation is the first - integer(I4B), intent(in) :: ntp !! Number of active test particles - class(swiftest_tp), intent(inout) :: tp !! Swiftest test particle class - real(DP), intent(in) :: mu !! G * (m1 + m2) = mass of the Sun in this routine - real(DP), intent(in) :: msys !! Total system masse - character(len=*), intent(in) :: qmin_coord !! Coordinate frame for qmin (see swiftest_globals for symbolic definitions) - end subroutine util_peri - - module subroutine util_toupper(string) - implicit none - character(*), intent(inout) :: string - end subroutine util_toupper - - module subroutine util_valid(pl, tp) - implicit none - class(swiftest_pl), intent(in) :: pl - class(swiftest_tp), intent(in) :: tp - end subroutine util_valid - - module subroutine util_version - implicit none - end subroutine util_version - - end interface - - interface util_sort - module subroutine util_sort_i4b(arr) - implicit none - integer(I4B), dimension(:), intent(inout) :: arr - end subroutine util_sort_i4b - - module subroutine util_sort_sp(arr) - implicit none - real(SP), dimension(:), intent(inout) :: arr - end subroutine util_sort_sp - - module subroutine util_sort_dp(arr) - implicit none - real(DP), dimension(:), intent(inout) :: arr - end subroutine util_sort_dp - end interface - - interface - module function calc_qrd_pstar(mtarg,mp,alpha) result(ans) - implicit none - real(DP),intent(in) :: mtarg, mp, alpha - real(DP) :: ans - end function calc_qrd_pstar - - module function calc_qrd_rev(mp,mtarg,mint,den1,den2, vimp) result(ans) - implicit none - real(DP),intent(in) :: mp, mtarg, mint, den1, den2, vimp - real(DP) :: ans - end function calc_qrd_rev - - module function calc_b(mp_pos, mp_vel, mp_r, mtarg_pos, mtarg_vel, mtarg_r) result(b) - implicit none - real(DP), intent(in), dimension(3) :: mp_pos, mp_vel, mtarg_pos, mtarg_vel - real(DP), intent(in) :: mp_r, mtarg_r - real(DP) :: b - end function calc_b - - end interface - - - -end module util diff --git a/src/rmvs/rmvs_setup.f90 b/src/rmvs/rmvs_setup.f90 index 83dd51106..4607bfbb0 100644 --- a/src/rmvs/rmvs_setup.f90 +++ b/src/rmvs/rmvs_setup.f90 @@ -12,7 +12,7 @@ module subroutine rmvs_setup_pl(self,n) class(rmvs_pl), intent(inout) :: self !! RMVS test particle object integer(I4B), intent(in) :: n !! Number of massive bodies to allocate ! Internals - integer(I4B) :: i,j + integer(I4B) :: i,j !> Call allocation method for parent class associate(pl => self) diff --git a/src/rmvs/rmvs_step.f90 b/src/rmvs/rmvs_step.f90 index 82f3a4101..bb6c0d843 100644 --- a/src/rmvs/rmvs_step.f90 +++ b/src/rmvs/rmvs_step.f90 @@ -449,7 +449,6 @@ subroutine rmvs_make_planetocentric(cb, pl, tp) return end subroutine rmvs_make_planetocentric - subroutine rmvs_peri_tp(tp, pl, t, dt, lfirst, inner_index, ipleP, param) !! author: David A. Minton !! diff --git a/src/symba/symba_io.f90 b/src/symba/symba_io.f90 index 8fd9bc6bc..67c5f979d 100644 --- a/src/symba/symba_io.f90 +++ b/src/symba/symba_io.f90 @@ -60,18 +60,18 @@ module subroutine symba_io_param_reader(self, unit, iotype, v_list, iostat, ioms ! Read the pair of tokens. The first one is the parameter name, the second is the value. param_name = io_get_token(line_trim, ifirst, ilast, iostat) if (param_name == '') cycle ! No parameter name (usually because this line is commented out) - call util_toupper(param_name) + call io_toupper(param_name) ifirst = ilast + 1 param_value = io_get_token(line_trim, ifirst, ilast, iostat) select case (param_name) case ("FRAGMENTATION") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == "T") self%lfragmentation = .true. case ("ROTATION") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lrotation = .true. case ("TIDES") - call util_toupper(param_value) + call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%ltides = .true. case ("MTINY") read(param_value, *) param%mtiny diff --git a/src/util/util_exit.f90 b/src/util/util_exit.f90 index ecf8d096d..4413bd9b3 100644 --- a/src/util/util_exit.f90 +++ b/src/util/util_exit.f90 @@ -1,29 +1,33 @@ -submodule (util) s_util_exit +submodule (swiftest_classes) s_util_exit use swiftest contains - module procedure util_exit - !! author: David A. Minton - !! - !! Print termination message and exit program - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_exit.f90 - !! Adapted from Hal Levison's Swift routine util_exit.f - character(*), parameter :: BAR = '("------------------------------------------------")' + module subroutine util_exit(code) + !! author: David A. Minton + !! + !! Print termination message and exit program + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_exit.f90 + !! Adapted from Hal Levison's Swift routine util_exit.f + implicit none + ! Arguments + integer(I4B), intent(in) :: code + ! Internals + character(*), parameter :: BAR = '("------------------------------------------------")' - select case(code) - case(SUCCESS) - write(*, SUCCESS_MSG) VERSION_NUMBER - write(*, BAR) - case(USAGE) - write(*, USAGE_MSG) - case(HELP) - write(*, HELP_MSG) - case default - write(*, FAIL_MSG) VERSION_NUMBER - write(*, BAR) - end select + select case(code) + case(SUCCESS) + write(*, SUCCESS_MSG) VERSION_NUMBER + write(*, BAR) + case(USAGE) + write(*, USAGE_MSG) + case(HELP) + write(*, HELP_MSG) + case default + write(*, FAIL_MSG) VERSION_NUMBER + write(*, BAR) + end select - stop + stop - end procedure util_exit + end subroutine util_exit end submodule s_util_exit diff --git a/src/util/util_get.f90 b/src/util/util_get.f90 deleted file mode 100644 index 2bb1c5f2d..000000000 --- a/src/util/util_get.f90 +++ /dev/null @@ -1,77 +0,0 @@ -! submodule (swiftest_classes) s_util_get_energy_and_momentum -! contains -! module procedure util_get_energy_and_momentum -! !! author: David A. Minton -! !! -! !! Compute total system angular momentum vector and kinetic, potential and total system energy -! !! -! !! Adapted from David E. Kaufmann's Swifter routine: symba_energy.f90 -! !! Adapted from Martin Duncan's Swift routine anal_energy.f -! use swiftest -! implicit none - -! integer(I4B) :: i, j -! real(DP) :: mass, msys, r2, v2, oblpot, ke, pe -! real(DP), dimension(NDIM) :: h, x, v, dx, htot -! real(DP), dimension(:), allocatable :: irh - -! select type(pl => self%pl) -! class is (swiftest_pl) -! call pl%h2b(self%cb) -! htot(:) = 0.0_DP -! ke = 0.0_DP -! pe = 0.0_DP - -! !!$omp parallel do default(private) & -! !!$omp shared (self) & -! !!$omp reduction (+:ke, pe, htot) -! do i = 1, pl%nbody -! x(:) = pl%xb(:, i) -! v(:) = pl%vb(:, i) -! mass = pl%Gmass(i) -! h(:) = x(:) .cross. v(:) -! htot(:) = htot(:) + mass * h(:) -! v2 = dot_product(v(:), v(:)) -! ke = ke + 0.5_DP * mass * v2 -! do j = i + 1, pl%nbody -! dx(:) = pl%xb(:, j) - x(:) -! r2 = dot_product(dx(:), dx(:)) -! if (r2 /= 0) then -! pe = pe - mass * pl%Gmass(j) / sqrt(r2) -! end if -! end do -! end do -! !!$omp end parallel do -! end select - -! select type(cb => self%cb) -! class is (swiftest_cb) -! ! Add in the central body -! x(:) = cb%xb(:) -! v(:) = cb%vb(:) -! mass = cb%Gmass -! h(:) = x(:) .cross. v(:) -! htot(:) = htot(:) + mass * h(:) -! v2 = dot_product(v(:), v(:)) -! ke = ke + 0.5_DP * mass * v2 -! if (cb%j2rp2 /= 0.0_DP) then -! allocate(irh(self%pl%nbody)) -! do i = 1, self%pl%nbody -! r2 = dot_product(self%pl%xh(:, i), self%pl%xh(:, i)) -! irh(i) = 1.0_DP / sqrt(r2) -! end do -! oblpot = self%pl%obl_pot(cb, irh) -! deallocate(irh) -! pe = pe + oblpot -! end if -! end select - -! self%pe = pe -! self%ke = ke -! self%te = ke + pe -! self%htot(:) = htot(:) - -! return - -! end procedure util_get_energy_and_momentum -! end submodule s_util_get_energy_and_momentum diff --git a/src/util/util_hills.f90 b/src/util/util_hills.f90 deleted file mode 100644 index b743e1f31..000000000 --- a/src/util/util_hills.f90 +++ /dev/null @@ -1,32 +0,0 @@ -submodule (util) s_util_hills - use swiftest -contains - module procedure util_hills - !! author: David A. Minton - !! - !! Compute Hill sphere radii of planets - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_hills.f90 - !! Adapted from Hal Levison's Swift routine util_hills.f - integer(I4B) :: i - real(DP) :: msun, mp, mu, energy, ap, r, v2 - - msun = swiftest_plA%mass(1) - do i = 2, npl - mp = swiftest_plA%mass(i) - if (mp > 0.0_DP) then - mu = msun + mp - r = norm2(swiftest_plA%xh(:, i)) - v2 = dot_product(swiftest_plA%vh(:, i), swiftest_plA%vh(:, i)) - energy = 0.5_DP*v2 - mu/r - ap = -0.5_DP*mu/energy - swiftest_plA%rhill(i) = ap*(((mp/mu)/3.0_DP)**(1.0_DP/3.0_DP)) - else - swiftest_plA%rhill(i) = 0.0_DP - end if - end do - - return - - end procedure util_hills -end submodule s_util_hills diff --git a/src/util/util_index.f90 b/src/util/util_index.f90 index 4bc760ec2..fcece8809 100644 --- a/src/util/util_index.f90 +++ b/src/util/util_index.f90 @@ -1,73 +1,78 @@ -submodule (util) s_util_index +submodule (swiftest_classes) s_util_index use swiftest contains - module procedure util_index - !! author: David A. Minton - !! - !! Index input real array into ascending numerical order using Quicksort algorithm - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_index.f90 - !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, - !! Vetterling, and Flannery, 2nd ed., pp. 1173-4 - integer(I4B), parameter :: nn = 15, nstack = 50 - integer(I4B) :: n, k, i, j, indext, jstack, l, r, dum - integer(I4B), dimension(nstack) :: istack - real(DP) :: a + module subroutine util_index(arr, index) + !! author: David A. Minton + !! + !! Index input real array into ascending numerical order using Quicksort algorithm + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_index.f90 + !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, + !! Vetterling, and Flannery, 2nd ed., pp. 1173-4 + implicit none + ! Arguments + integer(I4B), dimension(:), intent(out) :: index + real(DP), dimension(:), intent(in) :: arr + ! Internals + integer(I4B), parameter :: nn = 15, nstack = 50 + integer(I4B) :: n, k, i, j, indext, jstack, l, r, dum + integer(I4B), dimension(nstack) :: istack + real(DP) :: a - n = size(arr) - if (n /= size(index)) then - write(*, *) "Swiftest Error:" - write(*, *) " array size mismatch in util_index" - call util_exit(FAILURE) - end if - index = arth(1, 1, n) - jstack = 0 - ! l is the counter ie 'the one we are at' - l = 1 - ! r is the length of the array ie 'the total number of particles' - r = n - do - if ((r - l) < nn) then - do j = l + 1, r - indext = index(j) - a = arr(indext) - do i = j - 1, l, -1 - if (arr(index(i)) <= a) exit - index(i+1) = index(i) - end do - index(i+1) = indext - end do - if (jstack == 0) return - r = istack(jstack) - l = istack(jstack-1) - jstack = jstack - 2 - else - k = (l + r)/2 - dum = index(k); index(k) = index(l+1); index(l+1) = dum - ! if the mass of the particle we are at in our counting is greater than the mass of the last particle then put the particle we are at above the last one - if (arr(index(l)) > arr(index(r))) then - dum = index(l); index(l) = index(r); index(r) = dum - end if - ! if the mass of the particle above the one we are at in our counting is greater than the last particle then put that particle above the last one - if (arr(index(l+1)) > arr(index(r))) then - dum = index(l+1); index(l+1) = index(r); index(r) = dum - end if - ! if the mass of teh particle we are at in our counting is greater than the one above it, then put it above the one above it - if (arr(index(l)) > arr(index(l+1))) then - dum = index(l); index(l) = index(l+1); index(l+1) = dum - end if - i = l + 1 - j = r - indext = index(l+1) - a = arr(indext) - do - do - i = i + 1 - if (arr(index(i)) >= a) exit + n = size(arr) + if (n /= size(index)) then + write(*, *) "Swiftest Error:" + write(*, *) " array size mismatch in util_index" + call util_exit(FAILURE) + end if + index = arth(1, 1, n) + jstack = 0 + ! l is the counter ie 'the one we are at' + l = 1 + ! r is the length of the array ie 'the total number of particles' + r = n + do + if ((r - l) < nn) then + do j = l + 1, r + indext = index(j) + a = arr(indext) + do i = j - 1, l, -1 + if (arr(index(i)) <= a) exit + index(i+1) = index(i) + end do + index(i+1) = indext end do + if (jstack == 0) return + r = istack(jstack) + l = istack(jstack-1) + jstack = jstack - 2 + else + k = (l + r)/2 + dum = index(k); index(k) = index(l+1); index(l+1) = dum + ! if the mass of the particle we are at in our counting is greater than the mass of the last particle then put the particle we are at above the last one + if (arr(index(l)) > arr(index(r))) then + dum = index(l); index(l) = index(r); index(r) = dum + end if + ! if the mass of the particle above the one we are at in our counting is greater than the last particle then put that particle above the last one + if (arr(index(l+1)) > arr(index(r))) then + dum = index(l+1); index(l+1) = index(r); index(r) = dum + end if + ! if the mass of teh particle we are at in our counting is greater than the one above it, then put it above the one above it + if (arr(index(l)) > arr(index(l+1))) then + dum = index(l); index(l) = index(l+1); index(l+1) = dum + end if + i = l + 1 + j = r + indext = index(l+1) + a = arr(indext) do - j = j - 1 - if (arr(index(j)) <= a) exit + do + i = i + 1 + if (arr(index(i)) >= a) exit + end do + do + j = j - 1 + if (arr(index(j)) <= a) exit end do if (j < i) exit dum = index(i); index(i) = index(j); index(j) = dum @@ -94,5 +99,5 @@ return - end procedure util_index + end subroutine util_index end submodule s_util_index diff --git a/src/util/util_peri.f90 b/src/util/util_peri.f90 index bcface016..6cde4cc45 100644 --- a/src/util/util_peri.f90 +++ b/src/util/util_peri.f90 @@ -1,80 +1,79 @@ -submodule (util) s_util_peri +submodule (swiftest_classes) s_util_peri use swiftest contains - module procedure util_peri - !! author: David A. Minton - !! - !! Determine system pericenter passages for test particles - !! Note: If the coordinate system used is barycentric, then this routine assumes that the barycentric coordinates in the - !! test particle structures are up-to-date and are not recomputed - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_peri.f90 - !! Adapted from Hal Levison's Swift routine util_peri.f - implicit none - - integer(I4B) :: i - real(DP) :: e - real(DP), dimension(:), allocatable, save :: vdotr + module subroutine util_peri_tp(self, system, param) + !! author: David A. Minton + !! + !! Determine system pericenter passages for test particles + !! Note: If the coordinate system used is barycentric, then this routine assumes that the barycentric coordinates in the + !! test particle structures are up-to-date and are not recomputed + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_peri.f90 + !! Adapted from Hal Levison's Swift routine util_peri.f + implicit none + ! Arguments + class(swiftest_tp), intent(inout) :: self !! Swiftest test particle object + class(swiftest_nbody_system), intent(inout) :: system !! Swiftest nbody system object + class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters + ! Internals + integer(I4B) :: i + real(DP) :: e + real(DP), dimension(:), allocatable, save :: vdotr - associate(ntp => tp%nbody, xht => tp%xh, vht => tp%vh, status => tp%status, isperi => tp%isperi, & - xbt => tp%xb, vbt => tp%vb, atp => tp%atp, peri => tp%peri) - if (lfirst) then - if (.not. allocated(vdotr)) allocate(vdotr(ntp)) - if (qmin_coord == "HELIO") then - !do concurrent(i = 1:ntp, status(i) == ACTIVE) - do i = 1, ntp - vdotr(i) = dot_product(xht(:, i), vht(:, i)) - end do + associate(tp => self, ntp => self%nbody) + if (tp%lfirst) then + if (.not. allocated(vdotr)) allocate(vdotr(ntp)) + if (param%qmin_coord == "HELIO") then + do i = 1, ntp + vdotr(i) = dot_product(tp%xh(:, i), tp%vh(:, i)) + end do + else + do i = 1, ntp + vdotr(i) = dot_product(tp%xb(:, i), tp%vb(:, i)) + end do + end if + where(vdotr(1:ntp) > 0.0_DP) + tp%isperi(1:ntp) = 1 + elsewhere + tp%isperi = -1 + end where else - !do concurrent(i = 1:ntp, status(i) == ACTIVE) - do i = 1, ntp - vdotr(i) = dot_product(xbt(:, i), vbt(:, i)) - end do - end if - where(vdotr(1:ntp) > 0.0_DP) - isperi(1:ntp) = 1 - elsewhere - isperi = -1 - end where - else - if (qmin_coord == "HELIO") then - !do concurrent (i = 1:ntp, status(i) == ACTIVE) - do i = 1, ntp - vdotr(i) = dot_product(xht(:, i), vht(:, i)) - if (isperi(i) == -1) then - if (vdotr(i) >= 0.0_DP) then - isperi(i) = 0 - call orbel_xv2aeq(mu, xht(:, i), vht(:, i), atp(i), e, peri(i)) - end if - else - if (vdotr(i) > 0.0_DP) then - isperi(i) = 1 + if (param%qmin_coord == "HELIO") then + do i = 1, ntp + vdotr(i) = dot_product(tp%xh(:, i), tp%vh(:, i)) + if (tp%isperi(i) == -1) then + if (vdotr(i) >= 0.0_DP) then + tp%isperi(i) = 0 + call orbel_xv2aeq(tp%mu(i), tp%xh(:, i), tp%vh(:, i), tp%atp(i), e, tp%peri(i)) + end if else - isperi(i) = -1 - end if - end if - end do - else - !do concurrent (i = 1:ntp, status(i) == ACTIVE) - do i = 1, ntp - vdotr(i) = dot_product(xbt(:, i), vbt(:, i)) - if (isperi(i) == -1) then - if (vdotr(i) >= 0.0_DP) then - isperi(i) = 0 - call orbel_xv2aeq(msys, xbt(:, i), vbt(:, i), atp(i), e, peri(i)) + if (vdotr(i) > 0.0_DP) then + tp%isperi(i) = 1 + else + tp%isperi(i) = -1 + end if end if - else - if (vdotr(i) > 0.0_DP) then - isperi(i) = 1 + end do + else + do i = 1, ntp + vdotr(i) = dot_product(tp%xb(:, i), tp%vb(:, i)) + if (tp%isperi(i) == -1) then + if (vdotr(i) >= 0.0_DP) then + tp%isperi(i) = 0 + call orbel_xv2aeq(system%msys, tp%xb(:, i), tp%vb(:, i), tp%atp(i), e, tp%peri(i)) + end if else - isperi(i) = -1 + if (vdotr(i) > 0.0_DP) then + tp%isperi(i) = 1 + else + tp%isperi(i) = -1 + end if end if - end if - end do + end do + end if end if - end if - end associate - return + end associate + return - end procedure util_peri + end subroutine util_peri_tp end submodule s_util_peri diff --git a/src/util/util_reverse_status.f90 b/src/util/util_reverse_status.f90 index 253d10fde..5fc0d0f22 100644 --- a/src/util/util_reverse_status.f90 +++ b/src/util/util_reverse_status.f90 @@ -1,16 +1,18 @@ submodule (swiftest_classes) s_util_reverse_status use swiftest contains - module procedure util_reverse_status + module subroutine util_reverse_status(self) !! author: David A. Minton !! !! Reverses the active/inactive status of all particles in a structure implicit none + ! Arguments + class(swiftest_body), intent(inout) :: self !! Swiftest body object where (self%status(:) == ACTIVE) self%status(:) = INACTIVE elsewhere (self%status(:) == INACTIVE) self%status(:) = ACTIVE end where - end procedure util_reverse_status + end subroutine util_reverse_status end submodule s_util_reverse_status \ No newline at end of file diff --git a/src/util/util_sort.f90 b/src/util/util_sort.f90 new file mode 100644 index 000000000..126f4f12d --- /dev/null +++ b/src/util/util_sort.f90 @@ -0,0 +1,263 @@ +submodule (swiftest_classes) s_util_sort + use swiftest +contains + module subroutine util_sort_dp(arr) + !! author: David A. Minton + !! + !! Sort input double precision array into ascending numerical order using Quicksort algorithm + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_sort_dp.f90 + !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, + !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 + implicit none + ! Arguments + real(DP), dimension(:), intent(inout) :: arr + ! Internals + integer(I4B), parameter :: NN = 15, NSTACK = 50 + real(DP) :: a, dum + integer(I4B) :: n, k, i, j, jstack, l, r + integer(I4B), dimension(NSTACK) :: istack + + ! executable code + n = size(arr) + jstack = 0 + l = 1 + r = n + do + if ((r - l) < NN) then + do j = l + 1, r + a = arr(j) + do i = j - 1, l, -1 + if (arr(i) <= a) exit + arr(i+1) = arr(i) + end do + arr(i+1) = a + end do + if (jstack == 0) return + r = istack(jstack) + l = istack(jstack-1) + jstack = jstack - 2 + else + k = (l + r)/2 + dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum + if (arr(l) > arr(r)) then + dum = arr(l); arr(l) = arr(r); arr(r) = dum + end if + if (arr(l+1) > arr(r)) then + dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum + end if + if (arr(l) > arr(l+1)) then + dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum + end if + i = l + 1 + j = r + a = arr(l+1) + do + do + i = i + 1 + if (arr(i) >= a) exit + end do + do + j = j - 1 + if (arr(j) <= a) exit + end do + if (j < i) exit + dum = arr(i); arr(i) = arr(j); arr(j) = dum + end do + arr(l+1) = arr(j) + arr(j) = a + jstack = jstack + 2 + if (jstack > NSTACK) then + write(*, *) "Swiftest Error:" + write(*, *) " NSTACK too small in util_sort_I4B" + call util_exit(FAILURE) + end if + if ((r - i + 1) >= (j - l)) then + istack(jstack) = r + istack(jstack-1) = i + r = j - 1 + else + istack(jstack) = j - 1 + istack(jstack-1) = l + l = i + end if + end if + end do + + return + + end subroutine util_sort_dp + + module subroutine util_sort_i4b(arr) + !! author: David A. Minton + !! + !! Sort input double precision array into ascending numerical order using Quicksort algorithm + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_sort_i4b.f90 + !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, + !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 + implicit none + ! Arguments + integer(I4B), dimension(:), intent(inout) :: arr + ! Internals + integer(I4B), parameter :: NN = 15, NSTACK = 50 + integer(I4B) :: a, n, k, i, j, jstack, l, r, dum + integer(I4B), dimension(NSTACK) :: istack + + ! executable code + n = size(arr) + jstack = 0 + l = 1 + r = n + do + if ((r - l) < NN) then + do j = l + 1, r + a = arr(j) + do i = j - 1, l, -1 + if (arr(i) <= a) exit + arr(i+1) = arr(i) + end do + arr(i+1) = a + end do + if (jstack == 0) return + r = istack(jstack) + l = istack(jstack-1) + jstack = jstack - 2 + else + k = (l + r)/2 + dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum + if (arr(l) > arr(r)) then + dum = arr(l); arr(l) = arr(r); arr(r) = dum + end if + if (arr(l+1) > arr(r)) then + dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum + end if + if (arr(l) > arr(l+1)) then + dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum + end if + i = l + 1 + j = r + a = arr(l+1) + do + do + i = i + 1 + if (arr(i) >= a) exit + end do + do + j = j - 1 + if (arr(j) <= a) exit + end do + if (j < i) exit + dum = arr(i); arr(i) = arr(j); arr(j) = dum + end do + arr(l+1) = arr(j) + arr(j) = a + jstack = jstack + 2 + if (jstack > NSTACK) then + write(*, *) "Swiftest Error:" + write(*, *) " NSTACK too small in util_sort_i4b" + call util_exit(FAILURE) + end if + if ((r - i + 1) >= (j - l)) then + istack(jstack) = r + istack(jstack-1) = i + r = j - 1 + else + istack(jstack) = j - 1 + istack(jstack-1) = l + l = i + end if + end if + end do + + return + + end subroutine util_sort_i4b + + module subroutine util_sort_sp(arr) + !! author: David A. Minton + !! + !! Sort input single precision array into ascending numerical order using Quicksort algorithm + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_sort_DP.f90 + !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, + !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 + implicit none + ! Arguments + real(SP), dimension(:), intent(inout) :: arr + ! Internals + integer(I4B), parameter :: NN = 15, NSTACK = 50 + real(SP) :: a, dum + integer(I4B) :: n, k, i, j, jstack, l, r + integer(I4B), dimension(NSTACK) :: istack + + ! executable code + n = size(arr) + jstack = 0 + l = 1 + r = n + do + if ((r - l) < NN) then + do j = l + 1, r + a = arr(j) + do i = j - 1, l, -1 + if (arr(i) <= a) exit + arr(i+1) = arr(i) + end do + arr(i+1) = a + end do + if (jstack == 0) return + r = istack(jstack) + l = istack(jstack-1) + jstack = jstack - 2 + else + k = (l + r)/2 + dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum + if (arr(l) > arr(r)) then + dum = arr(l); arr(l) = arr(r); arr(r) = dum + end if + if (arr(l+1) > arr(r)) then + dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum + end if + if (arr(l) > arr(l+1)) then + dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum + end if + i = l + 1 + j = r + a = arr(l+1) + do + do + i = i + 1 + if (arr(i) >= a) exit + end do + do + j = j - 1 + if (arr(j) <= a) exit + end do + if (j < i) exit + dum = arr(i); arr(i) = arr(j); arr(j) = dum + end do + arr(l+1) = arr(j) + arr(j) = a + jstack = jstack + 2 + if (jstack > NSTACK) then + write(*, *) "Swiftest Error:" + write(*, *) " NSTACK too small in util_sort_I4B" + call util_exit(FAILURE) + end if + if ((r - i + 1) >= (j - l)) then + istack(jstack) = r + istack(jstack-1) = i + r = j - 1 + else + istack(jstack) = j - 1 + istack(jstack-1) = l + l = i + end if + end if + end do + + return + + end subroutine util_sort_sp +end submodule s_util_sort diff --git a/src/util/util_sort_dp.f90 b/src/util/util_sort_dp.f90 deleted file mode 100644 index 5d02a82c1..000000000 --- a/src/util/util_sort_dp.f90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (util) s_util_sort_dp - use swiftest -contains - module procedure util_sort_dp - !! author: David A. Minton - !! - !! Sort input double precision array into ascending numerical order using Quicksort algorithm - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_sort_dp.f90 - !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, - !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 - integer(I4B), parameter :: NN = 15, NSTACK = 50 - real(DP) :: a, dum - integer(I4B) :: n, k, i, j, jstack, l, r - integer(I4B), dimension(NSTACK) :: istack - -! executable code - n = size(arr) - jstack = 0 - l = 1 - r = n - do - if ((r - l) < NN) then - do j = l + 1, r - a = arr(j) - do i = j - 1, l, -1 - if (arr(i) <= a) exit - arr(i+1) = arr(i) - end do - arr(i+1) = a - end do - if (jstack == 0) return - r = istack(jstack) - l = istack(jstack-1) - jstack = jstack - 2 - else - k = (l + r)/2 - dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum - if (arr(l) > arr(r)) then - dum = arr(l); arr(l) = arr(r); arr(r) = dum - end if - if (arr(l+1) > arr(r)) then - dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum - end if - if (arr(l) > arr(l+1)) then - dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum - end if - i = l + 1 - j = r - a = arr(l+1) - do - do - i = i + 1 - if (arr(i) >= a) exit - end do - do - j = j - 1 - if (arr(j) <= a) exit - end do - if (j < i) exit - dum = arr(i); arr(i) = arr(j); arr(j) = dum - end do - arr(l+1) = arr(j) - arr(j) = a - jstack = jstack + 2 - if (jstack > NSTACK) then - write(*, *) "Swiftest Error:" - write(*, *) " NSTACK too small in util_sort_I4B" - call util_exit(FAILURE) - end if - if ((r - i + 1) >= (j - l)) then - istack(jstack) = r - istack(jstack-1) = i - r = j - 1 - else - istack(jstack) = j - 1 - istack(jstack-1) = l - l = i - end if - end if - end do - - return - - end procedure util_sort_dp -end submodule s_util_sort_dp diff --git a/src/util/util_sort_i4b.f90 b/src/util/util_sort_i4b.f90 deleted file mode 100644 index 7c1e0d08b..000000000 --- a/src/util/util_sort_i4b.f90 +++ /dev/null @@ -1,85 +0,0 @@ -submodule (util) s_util_sort_i4b - use swiftest -contains - module procedure util_sort_i4b - !! author: David A. Minton - !! - !! Sort input double precision array into ascending numerical order using Quicksort algorithm - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_sort_i4b.f90 - !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, - !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 - integer(I4B), parameter :: NN = 15, NSTACK = 50 - integer(I4B) :: a, n, k, i, j, jstack, l, r, dum - integer(I4B), dimension(NSTACK) :: istack - -! executable code - n = size(arr) - jstack = 0 - l = 1 - r = n - do - if ((r - l) < NN) then - do j = l + 1, r - a = arr(j) - do i = j - 1, l, -1 - if (arr(i) <= a) exit - arr(i+1) = arr(i) - end do - arr(i+1) = a - end do - if (jstack == 0) return - r = istack(jstack) - l = istack(jstack-1) - jstack = jstack - 2 - else - k = (l + r)/2 - dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum - if (arr(l) > arr(r)) then - dum = arr(l); arr(l) = arr(r); arr(r) = dum - end if - if (arr(l+1) > arr(r)) then - dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum - end if - if (arr(l) > arr(l+1)) then - dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum - end if - i = l + 1 - j = r - a = arr(l+1) - do - do - i = i + 1 - if (arr(i) >= a) exit - end do - do - j = j - 1 - if (arr(j) <= a) exit - end do - if (j < i) exit - dum = arr(i); arr(i) = arr(j); arr(j) = dum - end do - arr(l+1) = arr(j) - arr(j) = a - jstack = jstack + 2 - if (jstack > NSTACK) then - write(*, *) "Swiftest Error:" - write(*, *) " NSTACK too small in util_sort_i4b" - call util_exit(FAILURE) - end if - if ((r - i + 1) >= (j - l)) then - istack(jstack) = r - istack(jstack-1) = i - r = j - 1 - else - istack(jstack) = j - 1 - istack(jstack-1) = l - l = i - end if - end if - end do - - return - - end procedure util_sort_i4b -end submodule s_util_sort_i4b diff --git a/src/util/util_sort_sp.f90 b/src/util/util_sort_sp.f90 deleted file mode 100644 index baa82e941..000000000 --- a/src/util/util_sort_sp.f90 +++ /dev/null @@ -1,86 +0,0 @@ -submodule (util) s_util_sort_sp - use swiftest -contains - module procedure util_sort_sp - !! author: David A. Minton - !! - !! Sort input single precision array into ascending numerical order using Quicksort algorithm - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_sort_DP.f90 - !! Adapted from Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, by Press, Teukolsky, - !! Vetterling, and Flannery, 2nd ed., pp. 1169-70 - integer(I4B), parameter :: NN = 15, NSTACK = 50 - real(SP) :: a, dum - integer(I4B) :: n, k, i, j, jstack, l, r - integer(I4B), dimension(NSTACK) :: istack - -! executable code - n = size(arr) - jstack = 0 - l = 1 - r = n - do - if ((r - l) < NN) then - do j = l + 1, r - a = arr(j) - do i = j - 1, l, -1 - if (arr(i) <= a) exit - arr(i+1) = arr(i) - end do - arr(i+1) = a - end do - if (jstack == 0) return - r = istack(jstack) - l = istack(jstack-1) - jstack = jstack - 2 - else - k = (l + r)/2 - dum = arr(k); arr(k) = arr(l+1); arr(l+1) = dum - if (arr(l) > arr(r)) then - dum = arr(l); arr(l) = arr(r); arr(r) = dum - end if - if (arr(l+1) > arr(r)) then - dum = arr(l+1); arr(l+1) = arr(r); arr(r) = dum - end if - if (arr(l) > arr(l+1)) then - dum = arr(l); arr(l) = arr(l+1); arr(l+1) = dum - end if - i = l + 1 - j = r - a = arr(l+1) - do - do - i = i + 1 - if (arr(i) >= a) exit - end do - do - j = j - 1 - if (arr(j) <= a) exit - end do - if (j < i) exit - dum = arr(i); arr(i) = arr(j); arr(j) = dum - end do - arr(l+1) = arr(j) - arr(j) = a - jstack = jstack + 2 - if (jstack > NSTACK) then - write(*, *) "Swiftest Error:" - write(*, *) " NSTACK too small in util_sort_I4B" - call util_exit(FAILURE) - end if - if ((r - i + 1) >= (j - l)) then - istack(jstack) = r - istack(jstack-1) = i - r = j - 1 - else - istack(jstack) = j - 1 - istack(jstack-1) = l - l = i - end if - end if - end do - - return - - end procedure util_sort_sp -end submodule s_util_sort_sp diff --git a/src/util/util_toupper.f90 b/src/util/util_toupper.f90 deleted file mode 100644 index f5bf8b979..000000000 --- a/src/util/util_toupper.f90 +++ /dev/null @@ -1,24 +0,0 @@ -submodule (util) s_util_toupper - use swiftest -contains - module procedure util_toupper - !! author: David A. Minton - !! - !! Convert string to uppercase - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_toupper.f90 - integer(I4B) :: i, length, idx - - length = len(string) - do i = 1, length - idx = iachar(string(i:i)) - if ((idx >= lowercase_begin) .and. (idx <= lowercase_end)) then - idx = idx + uppercase_offset - string(i:i) = achar(idx) - end if - end do - - return - - end procedure util_toupper -end submodule s_util_toupper diff --git a/src/util/util_valid.f90 b/src/util/util_valid.f90 index ec1110025..ac81673ca 100644 --- a/src/util/util_valid.f90 +++ b/src/util/util_valid.f90 @@ -1,37 +1,41 @@ -submodule (util) s_util_valid +submodule (swiftest_classes) s_util_valid use swiftest contains - module procedure util_valid - !! author: David A. Minton - !! - !! Validate massive body and test particle ids - !! Subroutine causes program to exit with error if any ids are not unique - !! - !! Adapted from David E. Kaufmann's Swifter routine: util_valid.f90 - integer(I4B) :: i - integer(I4B), dimension(:), allocatable :: idarr + module subroutine util_valid(pl, tp) + !! author: David A. Minton + !! + !! Validate massive body and test particle ids + !! Subroutine causes program to exit with error if any ids are not unique + !! + !! Adapted from David E. Kaufmann's Swifter routine: util_valid.f90 + implicit none + ! Arguments + class(swiftest_pl), intent(in) :: pl + class(swiftest_tp), intent(in) :: tp + ! Internals + integer(I4B) :: i + integer(I4B), dimension(:), allocatable :: idarr -! executable code - associate(npl => pl%nbody, ntp => tp%nbody) - allocate(idarr(npl+ntp)) - do i = 1, npl - idarr(i) = pl%id(i) - end do - do i = 1, ntp - idarr(npl+i) = tp%id(i) - end do - call util_sort(idarr) - do i = 1, npl + ntp - 1 - if (idarr(i) == idarr(i+1)) then - write(*, *) "Swiftest error:" - write(*, *) " more than one body/particle has id = ", idarr(i) - call util_exit(FAILURE) - end if - end do - deallocate(idarr) - end associate + associate(npl => pl%nbody, ntp => tp%nbody) + allocate(idarr(npl+ntp)) + do i = 1, npl + idarr(i) = pl%id(i) + end do + do i = 1, ntp + idarr(npl+i) = tp%id(i) + end do + call util_sort(idarr) + do i = 1, npl + ntp - 1 + if (idarr(i) == idarr(i+1)) then + write(*, *) "Swiftest error:" + write(*, *) " more than one body/particle has id = ", idarr(i) + call util_exit(FAILURE) + end if + end do + deallocate(idarr) + end associate - return + return - end procedure util_valid + end subroutine util_valid end submodule s_util_valid diff --git a/src/util/util_version.f90 b/src/util/util_version.f90 index 0c0888f21..2b2c351be 100644 --- a/src/util/util_version.f90 +++ b/src/util/util_version.f90 @@ -1,7 +1,7 @@ -submodule (util) s_util_version +submodule (swiftest_classes) s_util_version use swiftest contains - module procedure util_version + module subroutine util_version() !! author: David A. Minton !! !! Print program version information to terminale @@ -47,6 +47,6 @@ "************************************************", /) return - end procedure util_version + end subroutine util_version end submodule s_util_version diff --git a/src/whm/whm_setup.f90 b/src/whm/whm_setup.f90 index f9a28478f..9f0f9b1b7 100644 --- a/src/whm/whm_setup.f90 +++ b/src/whm/whm_setup.f90 @@ -78,7 +78,7 @@ module subroutine whm_setup_system(self, param) !! implicit none ! Arguments - class(whm_nbody_system), intent(inout) :: self !! Swiftest system object + class(whm_nbody_system), intent(inout) :: self !! Swiftest system object class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters of on parameters call io_read_initialize_system(self, param) diff --git a/src/whm/whm_step.f90 b/src/whm/whm_step.f90 index 55e7611b1..ce00b86b1 100644 --- a/src/whm/whm_step.f90 +++ b/src/whm/whm_step.f90 @@ -17,7 +17,6 @@ module subroutine whm_step_system(self, param, t, dt) real(DP), intent(in) :: dt !! Current stepsize associate(system => self, cb => self%cb, pl => self%pl, tp => self%tp) - call pl%set_rhill(cb) call pl%step(system, param, t, dt) call tp%step(system, param, t, dt) end associate From d11230ee867c5924563b33c4be8c80ee2772f0c0 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 06:44:45 -0400 Subject: [PATCH 21/23] Updated example runs with correct initial conditions generators --- .../helio_swifter_comparison/cb.swiftest.in | 1 + .../helio_swifter_comparison/init_cond.py | 0 .../helio_swifter_comparison/pl.swifter.in | 48 +- .../helio_swifter_comparison/pl.swiftest.in | 32 +- .../helio_swifter_comparison/tp.swifter.in | 16 +- .../helio_swifter_comparison/tp.swiftest.in | 16 +- examples/rmvs_gr_test/cb.swiftest.in | Bin 64 -> 0 bytes examples/rmvs_gr_test/init_cond.py | 316 ---- .../mercury_collider_init_cond.py | 183 -- examples/rmvs_gr_test/param.swifter.in | 26 - examples/rmvs_gr_test/param.swiftest.in | 29 - examples/rmvs_gr_test/param.tpcollider.in | 26 - examples/rmvs_gr_test/particle_distance.ipynb | 1513 ----------------- examples/rmvs_gr_test/pl.swifter.in | 40 - examples/rmvs_gr_test/pl.swiftest.in | Bin 700 -> 0 bytes examples/rmvs_gr_test/pl.tpcollider.in | 36 - examples/rmvs_gr_test/rmvs_vs_whm.ipynb | 120 -- examples/rmvs_gr_test/swifter2swiftest.py | 1 - .../rmvs_gr_test/swiftest_relativity.ipynb | 199 --- .../swifttest_rmvs_vs_swifter_rmvs.ipynb | 156 -- examples/rmvs_gr_test/test_unit_change.ipynb | 169 -- examples/rmvs_gr_test/tp.swifter.in | 31 - examples/rmvs_gr_test/tp.swiftest.in | Bin 592 -> 0 bytes examples/rmvs_gr_test/tp.tpcollider.in | 4 - .../tp_collider_extract_init.ipynb | 654 ------- .../1pl_1tp_encounter/check_init_cond.ipynb | 930 ---------- .../swiftest_vs_swifter.ipynb | 4 +- .../9pl_18tp_encounters/init_cond.py | 2 +- .../9pl_18tp_encounters/param.swifter.in | 2 +- .../9pl_18tp_encounters/param.swiftest.in | 2 +- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 402 +++-- .../mars_ejecta/cb.swiftest.in | 1 + .../{config.swiftest.in => param.swiftest.in} | 7 - .../mars_ejecta/profmaker.sh | 2 - .../mars_ejecta/profswifter.sh | 2 - .../mars_ejecta/start.in | 1 - .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 44 +- examples/whm_gr_test/cb.swiftest.in | 1 + examples/whm_gr_test/init_cond.py | 3 +- examples/whm_gr_test/pl.swifter.in | 48 +- examples/whm_gr_test/pl.swiftest.in | 32 +- .../whm_gr_test/swiftest_relativity.ipynb | 19 +- 42 files changed, 396 insertions(+), 4722 deletions(-) mode change 100644 => 100755 examples/helio_swifter_comparison/init_cond.py delete mode 100644 examples/rmvs_gr_test/cb.swiftest.in delete mode 100644 examples/rmvs_gr_test/init_cond.py delete mode 100755 examples/rmvs_gr_test/mercury_collider_init_cond.py delete mode 100644 examples/rmvs_gr_test/param.swifter.in delete mode 100644 examples/rmvs_gr_test/param.swiftest.in delete mode 100644 examples/rmvs_gr_test/param.tpcollider.in delete mode 100644 examples/rmvs_gr_test/particle_distance.ipynb delete mode 100644 examples/rmvs_gr_test/pl.swifter.in delete mode 100644 examples/rmvs_gr_test/pl.swiftest.in delete mode 100644 examples/rmvs_gr_test/pl.tpcollider.in delete mode 100644 examples/rmvs_gr_test/rmvs_vs_whm.ipynb delete mode 120000 examples/rmvs_gr_test/swifter2swiftest.py delete mode 100644 examples/rmvs_gr_test/swiftest_relativity.ipynb delete mode 100644 examples/rmvs_gr_test/swifttest_rmvs_vs_swifter_rmvs.ipynb delete mode 100644 examples/rmvs_gr_test/test_unit_change.ipynb delete mode 100644 examples/rmvs_gr_test/tp.swifter.in delete mode 100644 examples/rmvs_gr_test/tp.swiftest.in delete mode 100644 examples/rmvs_gr_test/tp.tpcollider.in delete mode 100644 examples/rmvs_gr_test/tp_collider_extract_init.ipynb delete mode 100644 examples/rmvs_swifter_comparison/1pl_1tp_encounter/check_init_cond.ipynb rename examples/rmvs_swifter_comparison/mars_ejecta/{config.swiftest.in => param.swiftest.in} (80%) delete mode 100755 examples/rmvs_swifter_comparison/mars_ejecta/profmaker.sh delete mode 100755 examples/rmvs_swifter_comparison/mars_ejecta/profswifter.sh delete mode 100644 examples/rmvs_swifter_comparison/mars_ejecta/start.in diff --git a/examples/helio_swifter_comparison/cb.swiftest.in b/examples/helio_swifter_comparison/cb.swiftest.in index 058975b81..e4a010b1e 100644 --- a/examples/helio_swifter_comparison/cb.swiftest.in +++ b/examples/helio_swifter_comparison/cb.swiftest.in @@ -1,3 +1,4 @@ +0 39.476926408897626 0.004650467260962157 4.7535806948127355e-12 diff --git a/examples/helio_swifter_comparison/init_cond.py b/examples/helio_swifter_comparison/init_cond.py old mode 100644 new mode 100755 diff --git a/examples/helio_swifter_comparison/pl.swifter.in b/examples/helio_swifter_comparison/pl.swifter.in index aba56d467..e0ef4e881 100644 --- a/examples/helio_swifter_comparison/pl.swifter.in +++ b/examples/helio_swifter_comparison/pl.swifter.in @@ -2,35 +2,35 @@ 0 39.476926408897625196 0.0 0.0 0.0 0.0 0.0 0.0 -1 6.5537098095653139645e-06 0.0014751254963649625977 +1 6.5537098095653139645e-06 0.0014751243077781048702 1.6306381826061645943e-05 -0.359124056979876094 -0.1001978128323056938 -0.041130148620746292965 -0.7664364270424182397 10.3592906410849091145 0.7762248217818495593 -2 9.663313399581537916e-05 0.0067591139064765566703 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-4.2340114788918336805 10.486553514018327622 1.2453138107251555947 +2 9.663313399581537916e-05 0.006759104275397271956 4.0453784346544178454e-05 --0.709853246614207567 0.109615461427968005625 0.042466530791895232277 --1.166834223638398553 -7.334297883841826485 -0.033323414543104576783 -3 0.000120026935827952453094 0.010044751446422198828 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.07826338813583945357 -7.419533988988633545 -0.10634201014368884618 +3 0.000120026935827952453094 0.010044787321379672528 4.25875607065040958e-05 -0.26014404284638581455 -0.9828537227999029069 4.5807148740206238052e-05 -5.9724418390973225248 1.5843954077771575533 -9.4205748659356694786e-05 -4 1.2739802010675941456e-05 0.0072467561525263839036 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +5.7819217550992820422 2.18192814489641851 -0.00012230072278352209966 +4 1.2739802010675941456e-05 0.007246743835971885302 2.265740805092889601e-05 --1.4908630412685239808 0.7412277078494349247 0.052104480532706012874 --2.084278892390818102 -4.1405652065758745757 -0.035644761583621103612 -5 0.037692251088985676735 0.35527141892920671874 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-1.8728417739956807141 -4.239719661832373223 -0.042909557750301418264 +5 0.037692251088985676735 0.35527126534549128905 0.00046732617030490929307 -4.0233930071159198505 -3.029555621945668964 -0.077433472926114965684 -1.626590141045528945 2.3340622087669935288 -0.046085347207395002237 -6 0.011285899820091272997 0.43765136932522125042 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +1.6060801375519682711 2.349356876761497338 -0.045690062807172619064 +6 0.011285899820091272997 0.4376527512949726007 0.00038925687730393611812 -6.274810893232299236 -7.7275164380757708216 -0.115372736553069593635 -1.4703000143673246375 1.2821134193800077011 -0.08078666716402813097 -7 0.0017236589478267730203 0.469520070575212966 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +1.4661378456572359413 1.2872251175075805794 -0.08070991686100478242 +7 0.0017236589478267730203 0.4695362423191493196 0.00016953449859497231466 -14.871766666738729157 12.9908875920566391216 -0.14444232402201501175 --0.9541590491729433116 1.0172543087941671172 0.016087073469786578863 -8 0.0020336100526728302319 0.78126715446178621345 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.9554310497290159123 1.0161753499437922057 0.016099529164307530124 +8 0.0020336100526728302319 0.7812870996943599397 0.000164587904124493665 -29.554624389819270647 -4.648140925388063671 -0.5854586034520335991 -0.1723572655485145611 1.1421549698170996955 -0.027459964210413734165 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.17162147939801157335 1.1422848961108499101 -0.027445465472921385952 diff --git a/examples/helio_swifter_comparison/pl.swiftest.in b/examples/helio_swifter_comparison/pl.swiftest.in index 27814f389..9d49cc3da 100644 --- a/examples/helio_swifter_comparison/pl.swiftest.in +++ b/examples/helio_swifter_comparison/pl.swiftest.in @@ -1,33 +1,33 @@ 8 1 6.5537098095653139645e-06 1.6306381826061645943e-05 -0.359124056979876094 -0.1001978128323056938 -0.041130148620746292965 -0.7664364270424182397 10.3592906410849091145 0.7762248217818495593 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-4.2340114788918336805 10.486553514018327622 1.2453138107251555947 2 9.663313399581537916e-05 4.0453784346544178454e-05 --0.709853246614207567 0.109615461427968005625 0.042466530791895232277 --1.166834223638398553 -7.334297883841826485 -0.033323414543104576783 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.07826338813583945357 -7.419533988988633545 -0.10634201014368884618 3 0.000120026935827952453094 4.25875607065040958e-05 -0.26014404284638581455 -0.9828537227999029069 4.5807148740206238052e-05 -5.9724418390973225248 1.5843954077771575533 -9.4205748659356694786e-05 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +5.7819217550992820422 2.18192814489641851 -0.00012230072278352209966 4 1.2739802010675941456e-05 2.265740805092889601e-05 --1.4908630412685239808 0.7412277078494349247 0.052104480532706012874 --2.084278892390818102 -4.1405652065758745757 -0.035644761583621103612 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-1.8728417739956807141 -4.239719661832373223 -0.042909557750301418264 5 0.037692251088985676735 0.00046732617030490929307 -4.0233930071159198505 -3.029555621945668964 -0.077433472926114965684 -1.626590141045528945 2.3340622087669935288 -0.046085347207395002237 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +1.6060801375519682711 2.349356876761497338 -0.045690062807172619064 6 0.011285899820091272997 0.00038925687730393611812 -6.274810893232299236 -7.7275164380757708216 -0.115372736553069593635 -1.4703000143673246375 1.2821134193800077011 -0.08078666716402813097 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +1.4661378456572359413 1.2872251175075805794 -0.08070991686100478242 7 0.0017236589478267730203 0.00016953449859497231466 -14.871766666738729157 12.9908875920566391216 -0.14444232402201501175 --0.9541590491729433116 1.0172543087941671172 0.016087073469786578863 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.9554310497290159123 1.0161753499437922057 0.016099529164307530124 8 0.0020336100526728302319 0.000164587904124493665 -29.554624389819270647 -4.648140925388063671 -0.5854586034520335991 -0.1723572655485145611 1.1421549698170996955 -0.027459964210413734165 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.17162147939801157335 1.1422848961108499101 -0.027445465472921385952 diff --git a/examples/helio_swifter_comparison/tp.swifter.in b/examples/helio_swifter_comparison/tp.swifter.in index 62acd79fc..b37f04011 100644 --- a/examples/helio_swifter_comparison/tp.swifter.in +++ b/examples/helio_swifter_comparison/tp.swifter.in @@ -1,13 +1,13 @@ 4 101 -2.3133253483335658451 1.6360857008750779862 -0.37450983998533471375 --2.2458876465769251093 2.8378699270656317882 0.50346273267874514076 +2.2759060918449769417 1.6823262546111898974 -0.3661544509052930274 +-2.3097811686367798667 2.7916683305060454227 0.51377483806222698173 102 -3.009555158239280992 -1.1130165423439479788 0.51172110509120705135 -0.70453633545041942506 2.5148434686651768256 -1.80152331908826862 +3.0206599411327550442 -1.0715345879373190385 0.4820489106686373093 +0.64736314289225124926 2.5354787229381968757 -1.8109825958052419904 103 --0.5218824163555056961 -3.1396467647675119217 0.7342355813480357929 -3.0582031698647593751 -0.12050283730110719834 -0.096945705299882042706 +-0.47156753362343428737 -3.1411451968218520037 0.73253063903937232215 +3.067486522793096946 -0.061867034122113133084 -0.11064022385054755856 104 --2.075368356279947868 -0.76569201199778380573 0.27541025252901979448 -1.7615515330387480359 -3.9484151677488075983 -0.096278788580453326945 +-2.0454358521790818592 -0.83017357434175576003 0.27369621627497042748 +1.8825682786003801814 -3.9015333153827542793 -0.112405737336568095776 diff --git a/examples/helio_swifter_comparison/tp.swiftest.in b/examples/helio_swifter_comparison/tp.swiftest.in index 62acd79fc..b37f04011 100644 --- a/examples/helio_swifter_comparison/tp.swiftest.in +++ b/examples/helio_swifter_comparison/tp.swiftest.in @@ -1,13 +1,13 @@ 4 101 -2.3133253483335658451 1.6360857008750779862 -0.37450983998533471375 --2.2458876465769251093 2.8378699270656317882 0.50346273267874514076 +2.2759060918449769417 1.6823262546111898974 -0.3661544509052930274 +-2.3097811686367798667 2.7916683305060454227 0.51377483806222698173 102 -3.009555158239280992 -1.1130165423439479788 0.51172110509120705135 -0.70453633545041942506 2.5148434686651768256 -1.80152331908826862 +3.0206599411327550442 -1.0715345879373190385 0.4820489106686373093 +0.64736314289225124926 2.5354787229381968757 -1.8109825958052419904 103 --0.5218824163555056961 -3.1396467647675119217 0.7342355813480357929 -3.0582031698647593751 -0.12050283730110719834 -0.096945705299882042706 +-0.47156753362343428737 -3.1411451968218520037 0.73253063903937232215 +3.067486522793096946 -0.061867034122113133084 -0.11064022385054755856 104 --2.075368356279947868 -0.76569201199778380573 0.27541025252901979448 -1.7615515330387480359 -3.9484151677488075983 -0.096278788580453326945 +-2.0454358521790818592 -0.83017357434175576003 0.27369621627497042748 +1.8825682786003801814 -3.9015333153827542793 -0.112405737336568095776 diff --git a/examples/rmvs_gr_test/cb.swiftest.in b/examples/rmvs_gr_test/cb.swiftest.in deleted file mode 100644 index 2386b53c8a2bcee968968e01db63bf30bc75c07a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmd;JU|=xH*zksXud@ROkPX6j{SWxW@f6#``25D)QG73^*uwa(zDpQecDd{U@d2$e B4EX>6 diff --git a/examples/rmvs_gr_test/init_cond.py b/examples/rmvs_gr_test/init_cond.py deleted file mode 100644 index 7083997bc..000000000 --- a/examples/rmvs_gr_test/init_cond.py +++ /dev/null @@ -1,316 +0,0 @@ -""" -This script generates initial conditions for the solar using JPL Horizons data. - -For testing RMVS, the code generates clones of test particles based on one that is fated to impact Mercury. -To use the script, modify the variables just after the "if __name__ == '__main__':" line -""" -import numpy as np -import sys -from astroquery.jplhorizons import Horizons -import astropy.constants as const -import swiftestio as swio -from scipy.io import FortranFile - -from numpy.random import default_rng - -#Values from JPL Horizons -AU2M = np.longdouble(const.au.value) -GMSunSI = np.longdouble(const.GM_sun.value) -Rsun = np.longdouble(const.R_sun.value) -GC = np.longdouble(const.G.value) -JD = 86400 -year = np.longdouble(365.25 * JD) -c = np.longdouble(299792458.0) -MSun_over_Mpl = np.array([6023600.0, - 408523.71, - 328900.56, - 3098708., - 1047.3486, - 3497.898, - 22902.98, - 19412.24, - 1.35e8], dtype=np.longdouble) - -MU2KG = np.longdouble(GMSunSI / GC) #Conversion from mass unit to kg -DU2M = np.longdouble(AU2M) #Conversion from radius unit to centimeters -TU2S = np.longdouble(year) #Conversion from time unit to seconds -GU = np.longdouble(GC / (DU2M**3 / (MU2KG * TU2S**2))) - -GMSun = np.longdouble(GMSunSI / (DU2M**3 / TU2S**2)) - -# Simulation start, stop, and output cadence times -t_0 = 0 # simulation start time -deltaT = 0.25 * JD / TU2S # simulation step size -end_sim = 500 * year / TU2S # simulation end time -t_print = 0.1 * year / TU2S #output interval to print results - -# Solar oblatenes values: From Mecheri et al. (2004), using Corbard (b) 2002 values (Table II) -J2 = np.longdouble(2.198e-7) * (Rsun / DU2M)**2 -J4 = np.longdouble(-4.805e-9) * (Rsun / DU2M)**4 - -tstart = '2021-01-28' -tend = '2021-01-29' -tstep = '1d' -planetid = { - 'mercury' : '1', - 'venus' : '2', - 'earthmoon' : '3', - 'mars' : '4', - 'jupiter' : '5', - 'saturn' : '6', - 'uranus' : '7', - 'neptune' : '8', - 'plutocharon' : '9' -} -npl = 9 - -#Planet Msun/M ratio -MSun_over_Mpl = { - 'mercury' : np.longdouble(6023600.0), - 'venus' : np.longdouble(408523.71), - 'earthmoon' : np.longdouble(328900.56), - 'mars' : np.longdouble(3098708.), - 'jupiter' : np.longdouble(1047.3486), - 'saturn' : np.longdouble(3497.898), - 'uranus' : np.longdouble(22902.98), - 'neptune' : np.longdouble(19412.24), - 'plutocharon' : np.longdouble(1.35e8) -} - -#Planet radii in meters -Rpl = { - 'mercury' : np.longdouble(2439.4e3), - 'venus' : np.longdouble(6051.8e3), - 'earthmoon' : np.longdouble(6371.0084e3), # Earth only for radius - 'mars' : np.longdouble(3389.50e3), - 'jupiter' : np.longdouble(69911e3), - 'saturn' : np.longdouble(58232.0e3), - 'uranus' : np.longdouble(25362.e3), - 'neptune' : np.longdouble(24622.e3), - 'plutocharon' : np.longdouble(1188.3e3) -} - -pdata = {} -plvec = {} -Rhill = {} -THIRDLONG = np.longdouble(1.0) / np.longdouble(3.0) - -for key,val in planetid.items(): - pdata[key] = Horizons(id=val, id_type='majorbody',location='@sun', - epochs={'start': tstart, 'stop': tend, - 'step': tstep}) - plvec[key] = np.array([pdata[key].vectors()['x'][0], - pdata[key].vectors()['y'][0], - pdata[key].vectors()['z'][0], - pdata[key].vectors()['vx'][0], - pdata[key].vectors()['vy'][0], - pdata[key].vectors()['vz'][0] - ]) - Rhill[key] = np.longdouble(pdata[key].elements()['a'][0]) * (3 * MSun_over_Mpl[key])**(-THIRDLONG) - -if __name__ == '__main__': - - nclones = 10 - xv_dispersion_factor = 0.01 # randomly alter x and v vectors by this fraction of the original - - # Get tp data from collidor simulation to produce the parent of the clones - inparfile = "param.tpcollider.in" - paramfile = swio.read_swifter_param(inparfile) - swifterdat = swio.swifter2xr(paramfile) - px = swifterdat.isel(time=-1).sel(id=100)['px'].values.item() - py = swifterdat.isel(time=-1).sel(id=100)['py'].values.item() - pz = swifterdat.isel(time=-1).sel(id=100)['pz'].values.item() - - vx = swifterdat.isel(time=-1).sel(id=100)['vx'].values.item() - vy = swifterdat.isel(time=-1).sel(id=100)['vy'].values.item() - vz = swifterdat.isel(time=-1).sel(id=100)['vz'].values.item() - - jangofett = np.array([px, py, pz, -vx, -vy, -vz]) - - # generate random clones - rng = default_rng() - clone_xv = (rng.standard_normal((nclones, 6)) - 0.5) * xv_dispersion_factor + 1.0 - clonetroops = jangofett * clone_xv - clonenames = range(100, 100 + nclones) - tpvec = dict(zip(clonenames,clonetroops)) - - # Convert from AU-day to AU-year just because I find it easier to keep track of the sim progress - for plid in plvec: - plvec[plid][3:] *= year / JD - - for tpid in tpvec: - tpvec[tpid][3:] *= year / JD - - # Names of all output files - swifter_input = "param.swifter.in" - swifter_pl = "pl.swifter.in" - swifter_tp = "tp.swifter.in" - swifter_bin = "bin.swifter.dat" - swifter_enc = "enc.swifter.dat" - - swiftest_input = "param.swiftest.in" - swiftest_pl = "pl.swiftest.in" - swiftest_tp = "tp.swiftest.in" - swiftest_cb = "cb.swiftest.in" - swiftest_bin = "bin.swiftest.dat" - swiftest_enc = "enc.swiftest.dat" - - iout = int(np.ceil(t_print / deltaT)) - rmin = Rsun / DU2M - rmax = 1000.0 - - #Make Swifter files - plfile = open(swifter_pl, 'w') - print(npl+1, f'! Planet input file generated using init_cond.py using JPL Horizons data for the major planets (and Pluto) for epoch {tstart}' ,file=plfile) - print(1,GMSun,file=plfile) - print('0.0 0.0 0.0',file=plfile) - print('0.0 0.0 0.0',file=plfile) - for i, plid in enumerate(plvec): - print(i + 2,"{:.23g}".format(GMSun * MSun_over_Mpl[plid]**-1),Rhill[plid], file=plfile) - print(Rpl[plid] / DU2M, file=plfile) - print(plvec[plid][0],plvec[plid][1],plvec[plid][2], file=plfile) - print(plvec[plid][3],plvec[plid][4],plvec[plid][5], file=plfile) - plfile.close() - - tpfile = open(swifter_tp, 'w') - print(nclones,file=tpfile) - for tpid, tp in tpvec.items(): - print(tpid, file=tpfile) - print(f'{tp[0]} {tp[1]} {tp[2]}', file=tpfile) - print(f'{tp[3]} {tp[4]} {tp[5]}', file=tpfile) - tpfile.close() - - sys.stdout = open(swifter_input, "w") - print(f'! Swifter input file generated using init_cond.py') - print(f'T0 {t_0} ') - print(f'TSTOP {end_sim}') - print(f'DT {deltaT}') - print(f'PL_IN {swifter_pl}') - print(f'TP_IN {swifter_tp}') - print(f'IN_TYPE ASCII') - print(f'ISTEP_OUT {iout:d}') - print(f'ISTEP_DUMP {iout:d}') - print(f'BIN_OUT {swifter_bin}') - print(f'OUT_TYPE REAL8') - print(f'OUT_FORM EL') - print(f'OUT_STAT NEW') - print(f'J2 {J2}') - print(f'J4 {J4}') - print(f'CHK_CLOSE yes') - print(f'CHK_RMIN {rmin}') - print(f'CHK_RMAX {rmax}') - print(f'CHK_EJECT {rmax}') - print(f'CHK_QMIN {rmin}') - print(f'CHK_QMIN_COORD HELIO') - print(f'CHK_QMIN_RANGE {rmin} {rmax}') - print(f'ENC_OUT {swifter_enc}') - print(f'EXTRA_FORCE no') - print(f'BIG_DISCARD no') - print(f'RHILL_PRESENT yes') - - #Now make Swiftest files - cbfile = FortranFile(swiftest_cb, 'w') - Msun = np.double(1.0) - cbfile.write_record(np.double(GMSun)) - cbfile.write_record(np.double(rmin)) - cbfile.write_record(np.double(J2)) - cbfile.write_record(np.double(J4)) - cbfile.close() - - plfile = FortranFile(swiftest_pl, 'w') - plfile.write_record(npl) - - name = np.empty(npl, dtype=np.int32) - px = np.empty(npl, dtype=np.double) - py = np.empty(npl, dtype=np.double) - pz = np.empty(npl, dtype=np.double) - vx = np.empty(npl, dtype=np.double) - vy = np.empty(npl, dtype=np.double) - vz = np.empty(npl, dtype=np.double) - mass = np.empty(npl, dtype=np.double) - Gmass = np.empty(npl, dtype=np.double) - radius = np.empty(npl, dtype=np.double) - for i, plid in enumerate(plvec): - name[i] = i + 2 - px[i] = plvec[plid][0] - py[i] = plvec[plid][1] - pz[i] = plvec[plid][2] - vx[i] = plvec[plid][3] - vy[i] = plvec[plid][4] - vz[i] = plvec[plid][5] - Gmass[i] = GMSun * MSun_over_Mpl[plid]**-1 - radius[i] = Rpl[plid] / DU2M - plfile.write_record(name.T) - plfile.write_record(px.T) - plfile.write_record(py.T) - plfile.write_record(pz.T) - plfile.write_record(vx.T) - plfile.write_record(vy.T) - plfile.write_record(vz.T) - plfile.write_record(Gmass.T) - plfile.write_record(radius.T) - plfile.close() - tpfile = FortranFile(swiftest_tp, 'w') - ntp = nclones - tpfile.write_record(ntp) - name = np.empty(ntp, dtype=np.int32) - px = np.empty(ntp, dtype=np.double) - py = np.empty(ntp, dtype=np.double) - pz = np.empty(ntp, dtype=np.double) - vx = np.empty(ntp, dtype=np.double) - vy = np.empty(ntp, dtype=np.double) - vz = np.empty(ntp, dtype=np.double) - for i, tpid in enumerate(tpvec): - name[i] = int(tpid) - px[i] = tpvec[tpid][0] - py[i] = tpvec[tpid][1] - pz[i] = tpvec[tpid][2] - vx[i] = tpvec[tpid][3] - vy[i] = tpvec[tpid][4] - vz[i] = tpvec[tpid][5] - tpfile.write_record(name.T) - tpfile.write_record(px.T) - tpfile.write_record(py.T) - tpfile.write_record(pz.T) - tpfile.write_record(vx.T) - tpfile.write_record(vy.T) - tpfile.write_record(vz.T) - - tpfile.close() - - sys.stdout = open(swiftest_input, "w") - print(f'! Swiftest input file generated using init_cond.py') - print(f'T0 {t_0} ') - print(f'TSTOP {end_sim}') - print(f'DT {deltaT}') - print(f'CB_IN {swiftest_cb}') - print(f'PL_IN {swiftest_pl}') - print(f'TP_IN {swiftest_tp}') - print(f'IN_TYPE REAL8') - print(f'ISTEP_OUT {iout:d}') - print(f'ISTEP_DUMP {iout:d}') - print(f'BIN_OUT {swiftest_bin}') - print(f'OUT_TYPE REAL8') - print(f'OUT_FORM EL') - print(f'OUT_STAT REPLACE') - print(f'CHK_CLOSE yes') - print(f'CHK_RMIN {rmin}') - print(f'CHK_RMAX {rmax}') - print(f'CHK_EJECT {rmax}') - print(f'CHK_QMIN {rmin}') - print(f'CHK_QMIN_COORD HELIO') - print(f'CHK_QMIN_RANGE {rmin} {rmax}') - print(f'ENC_OUT {swiftest_enc}') - print(f'EXTRA_FORCE no') - print(f'BIG_DISCARD no') - print(f'ROTATION no') - print(f'GR no') - print(f'MU2KG {MU2KG}') - print(f'DU2M {DU2M}') - print(f'TU2S {TU2S}') - - - sys.stdout = sys.__stdout__ - - - diff --git a/examples/rmvs_gr_test/mercury_collider_init_cond.py b/examples/rmvs_gr_test/mercury_collider_init_cond.py deleted file mode 100755 index 494669bb8..000000000 --- a/examples/rmvs_gr_test/mercury_collider_init_cond.py +++ /dev/null @@ -1,183 +0,0 @@ -""" -This script generates initial conditions for the solar using JPL Horizons data. -Makes a test particle located at Mercury's position, 500 years into the future so that I can model an impact onto Mercury. - -To use the script, modify the variables just after the "if __name__ == '__main__':" line -""" -import numpy as np -import sys -from astroquery.jplhorizons import Horizons -import astropy.constants as const - -#Values from JPL Horizons -AU2M = const.au.value -GMSunSI = const.GM_sun.value -Rsun = const.R_sun.value -GC = const.G.value -JD = 86400 -year = 365.25 * JD -c = 299792458.0 - - - -MU2KG = GMSunSI / GC #Conversion from mass unit (G * Msun) to kg -DU2M = AU2M #Conversion from distance unit (AU) to meters -TU2S = JD #Conversion from time unit (Julian Day) to seconds -GU = GC / (DU2M**3 / (MU2KG * TU2S**2)) - -GMSun = GMSunSI / (DU2M**3 / TU2S**2) - - - -# Solar oblateness values: From Mecheri et al. (2004), using Corbard (b) 2002 values (Table II) -J2 = 2.198e-7 * (Rsun / DU2M)**2 -J4 = -4.805e-9 * (Rsun / DU2M)**4 - -npl = 9 - -tstart = '2421-01-31' -tend = '2421-02-01' -tstep = '1d' - -# All planets except for Mercury -planetid = { - 'venus' : '2', - 'earthmoon' : '3', - 'mars' : '4', - 'jupiter' : '5', - 'saturn' : '6', - 'uranus' : '7', - 'neptune' : '8', - 'plutocharon' : '9' -} - -tpid = {'mercury_impactor' : '1'} - -#Planet Msun/M ratio -MSun_over_Mpl = { - 'mercury' : 6023600.0, - 'venus' : 408523.71, - 'earthmoon' : 328900.56, - 'mars' : 3098708., - 'jupiter' : 1047.3486, - 'saturn' : 3497.898, - 'uranus' : 22902.98, - 'neptune' : 19412.24, - 'plutocharon' : 1.35e8 -} - -#Planet radii in meters -Rpl = { - 'mercury' : 2439.4e3, - 'venus' : 6051.8e3, - 'earthmoon' : 6371.0084e3, # Earth only for radius - 'mars' : 3389.50e3, - 'jupiter' : 69911e3, - 'saturn' : 58232.0e3, - 'uranus' : 25362.e3, - 'neptune' : 24622.e3, - 'plutocharon' : 1188.3e3 -} - -pdata = {} -vec = {} -Rhill = {} - -for key,val in planetid.items(): - pdata[key] = Horizons(id=val, id_type='majorbody',location='@sun', - epochs={'start': tstart, 'stop': tend, - 'step': tstep}) - vec[key] = np.array([pdata[key].vectors()['x'][0], - pdata[key].vectors()['y'][0], - pdata[key].vectors()['z'][0], - pdata[key].vectors()['vx'][0], - pdata[key].vectors()['vy'][0], - pdata[key].vectors()['vz'][0] - ]) - Rhill[key] = pdata[key].elements()['a'][0] * (3 * MSun_over_Mpl[key])**(-1.0 / 3.0) - -# Make a test particle initially at Mercury's position but with 10% higher velocity -vfactor = 1.00 -tpdata = Horizons(id='1', id_type='majorbody',location='@sun', - epochs={'start': tstart, 'stop': tend, - 'step': tstep}) -tpvec = [tpdata.vectors()['x'][0], - tpdata.vectors()['y'][0], - tpdata.vectors()['z'][0], - vfactor * tpdata.vectors()['vx'][0], - vfactor * tpdata.vectors()['vy'][0], - vfactor * tpdata.vectors()['vz'][0] - ] - -if __name__ == '__main__': - # Names of all output files - swifter_input = "param.tpcollider.in" - swifter_pl = "pl.tpcollider.in" - swifter_tp = "tp.tpcollider.in" - swifter_bin = "bin.tpcollider.dat" - swifter_enc = "enc.tpcollider.dat" - - # Simulation start, stop, and output cadence times - t_0 = 0 * year / TU2S # simulation start time - deltaT = 0.1 * JD / TU2S # simulation step size - t_print = 4.e0 * year / TU2S #output interval to print results - end_sim = 400.0 * year / TU2S # simulation end time - - - iout = int(np.ceil(t_print / deltaT)) - rmin = Rsun / DU2M - rmax = 10000.0 - - #Make Swifter files - # Reverse all the velocity signs to fake going backward in time - plfile = open(swifter_pl, 'w') - print(f'{npl} ! Planet input file generated using init_cond.py using JPL Horizons data for the major planets (and Pluto) for epoch {tstart}' ,file=plfile) - print(f'1 {GMSun}',file=plfile) - print(f'0.0 0.0 0.0',file=plfile) - print(f'0.0 0.0 0.0',file=plfile) - for i, key in enumerate(planetid): - print(f'{i + 3} {GMSun / MSun_over_Mpl[key]} {Rhill[key]}', file=plfile) - print(f'{Rpl[key] / DU2M}', file=plfile) - print(f'{vec[key][0]} {vec[key][1]} {vec[key][2]}', file=plfile) - print(f'{-vec[key][3]} {-vec[key][4]} {-vec[key][5]}', file=plfile) - plfile.close() - tpfile = open(swifter_tp, 'w') - print(1,file=tpfile) - print(100,file=tpfile) - print(f'{tpvec[0]} {tpvec[1]} {tpvec[2]}', file=tpfile) - print(f'{-tpvec[3]} {-tpvec[4]} {-tpvec[5]}', file=tpfile) - tpfile.close() - - sys.stdout = open(swifter_input, "w") - print(f'! Swifter input file generated using init_cond.py') - print(f'T0 {t_0} ') - print(f'TSTOP {end_sim}') - print(f'DT {deltaT}') - print(f'PL_IN {swifter_pl}') - print(f'TP_IN {swifter_tp}') - print(f'IN_TYPE ASCII') - print(f'ISTEP_OUT {iout:d}') - print(f'ISTEP_DUMP {iout:d}') - print(f'BIN_OUT {swifter_bin}') - print(f'OUT_TYPE REAL8') - print(f'OUT_FORM XV') - print(f'OUT_STAT NEW') - print(f'J2 {J2}') - print(f'J4 {J4}') - print(f'CHK_CLOSE yes') - print(f'CHK_RMIN {rmin}') - print(f'CHK_RMAX {rmax}') - print(f'CHK_EJECT {rmax}') - print(f'CHK_QMIN {rmin}') - print(f'CHK_QMIN_COORD HELIO') - print(f'CHK_QMIN_RANGE {rmin} {rmax}') - print(f'ENC_OUT {swifter_enc}') - print(f'EXTRA_FORCE no') - print(f'BIG_DISCARD no') - print(f'RHILL_PRESENT yes') - - - sys.stdout = sys.__stdout__ - - - diff --git a/examples/rmvs_gr_test/param.swifter.in b/examples/rmvs_gr_test/param.swifter.in deleted file mode 100644 index 5834d2dcc..000000000 --- a/examples/rmvs_gr_test/param.swifter.in +++ /dev/null @@ -1,26 +0,0 @@ -! Swifter input file generated using init_cond.py -T0 0 -TSTOP 1.0 -DT 0.0006844626967830253 -PL_IN pl.swifter.in -TP_IN tp.swifter.in -IN_TYPE ASCII -ISTEP_OUT 1 -ISTEP_DUMP 1 -BIN_OUT bin.swifter.dat -OUT_TYPE REAL8 -OUT_FORM EL -OUT_STAT NEW -J2 4.7535806948127355e-12 -J4 -2.2473967953572827e-18 -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swifter.dat -EXTRA_FORCE no -BIG_DISCARD no -RHILL_PRESENT yes diff --git a/examples/rmvs_gr_test/param.swiftest.in b/examples/rmvs_gr_test/param.swiftest.in deleted file mode 100644 index 6e623a5dd..000000000 --- a/examples/rmvs_gr_test/param.swiftest.in +++ /dev/null @@ -1,29 +0,0 @@ -! Swiftest input file generated using init_cond.py -T0 0 -TSTOP 1.0 -DT 0.0006844626967830253 -CB_IN cb.swiftest.in -PL_IN pl.swiftest.in -TP_IN tp.swiftest.in -IN_TYPE REAL8 -ISTEP_OUT 1 -ISTEP_DUMP 1 -BIN_OUT bin.swiftest.dat -OUT_TYPE REAL8 -OUT_FORM EL -OUT_STAT REPLACE -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 1000.0 -CHK_EJECT 1000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 1000.0 -ENC_OUT enc.swiftest.dat -EXTRA_FORCE no -BIG_DISCARD no -ROTATION no -GR no -MU2KG 1.988409870698051e+30 -DU2M 149597870700.0 -TU2S 31557600.0 diff --git a/examples/rmvs_gr_test/param.tpcollider.in b/examples/rmvs_gr_test/param.tpcollider.in deleted file mode 100644 index a6066b36c..000000000 --- a/examples/rmvs_gr_test/param.tpcollider.in +++ /dev/null @@ -1,26 +0,0 @@ -! Swifter input file generated using init_cond.py -T0 0.0 -TSTOP 146100.0 -DT 0.1 -PL_IN pl.tpcollider.in -TP_IN tp.tpcollider.in -IN_TYPE ASCII -ISTEP_OUT 14610 -ISTEP_DUMP 14610 -BIN_OUT bin.tpcollider.dat -OUT_TYPE REAL8 -OUT_FORM XV -OUT_STAT NEW -J2 4.7535806948127355e-12 -J4 -2.2473967953572827e-18 -CHK_CLOSE yes -CHK_RMIN 0.004650467260962157 -CHK_RMAX 10000.0 -CHK_EJECT 10000.0 -CHK_QMIN 0.004650467260962157 -CHK_QMIN_COORD HELIO -CHK_QMIN_RANGE 0.004650467260962157 10000.0 -ENC_OUT enc.tpcollider.dat -EXTRA_FORCE no -BIG_DISCARD no -RHILL_PRESENT yes diff --git a/examples/rmvs_gr_test/particle_distance.ipynb b/examples/rmvs_gr_test/particle_distance.ipynb deleted file mode 100644 index 5286218d8..000000000 --- a/examples/rmvs_gr_test/particle_distance.ipynb +++ /dev/null @@ -1,1513 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import swiftestio as swio\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swifter file param.swifter.in\n" - ] - } - ], - "source": [ - "inparfile = \"param.swifter.in\"\n", - "paramfile = swio.read_swifter_param(inparfile)\n", - "swifterdat = swio.swifter2xr(paramfile)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset>\n",
    -       "Dimensions:  (id: 19, time: 1462)\n",
    -       "Coordinates:\n",
    -       "  * id       (id) int64 2 3 4 5 6 7 8 9 10 ... 102 103 104 105 106 107 108 109\n",
    -       "  * time     (time) float64 0.0 0.0006845 0.001369 ... 0.9986 0.9993 1.0\n",
    -       "Data variables:\n",
    -       "    a        (time, id) float64 0.3871 0.7233 1.0 1.524 ... 0.5458 0.537 0.567\n",
    -       "    e        (time, id) float64 0.2056 0.006785 0.01673 ... 0.366 0.3625 0.3776\n",
    -       "    inc      (time, id) float64 0.1222 0.05925 4.707e-05 ... 0.1256 0.1248\n",
    -       "    capom    (time, id) float64 0.8431 1.337 3.081 ... 0.929 0.9151 0.9155\n",
    -       "    omega    (time, id) float64 0.5094 0.9622 5.0 5.003 ... 5.833 5.887 5.824\n",
    -       "    capm     (time, id) float64 6.205 2.489 0.4222 1.624 ... 2.416 2.764 1.578\n",
    -       "    Mass     (time, id) float64 6.554e-06 9.663e-05 0.00012 ... nan nan nan\n",
    -       "    Radius   (time, id) float64 1.631e-05 4.045e-05 4.259e-05 ... nan nan nan
    " - ], - "text/plain": [ - "\n", - "Dimensions: (id: 19, time: 1462)\n", - "Coordinates:\n", - " * id (id) int64 2 3 4 5 6 7 8 9 10 ... 102 103 104 105 106 107 108 109\n", - " * time (time) float64 0.0 0.0006845 0.001369 ... 0.9986 0.9993 1.0\n", - "Data variables:\n", - " a (time, id) float64 0.3871 0.7233 1.0 1.524 ... 0.5458 0.537 0.567\n", - " e (time, id) float64 0.2056 0.006785 0.01673 ... 0.366 0.3625 0.3776\n", - " inc (time, id) float64 0.1222 0.05925 4.707e-05 ... 0.1256 0.1248\n", - " capom (time, id) float64 0.8431 1.337 3.081 ... 0.929 0.9151 0.9155\n", - " omega (time, id) float64 0.5094 0.9622 5.0 5.003 ... 5.833 5.887 5.824\n", - " capm (time, id) float64 6.205 2.489 0.4222 1.624 ... 2.416 2.764 1.578\n", - " Mass (time, id) float64 6.554e-06 9.663e-05 0.00012 ... nan nan nan\n", - " Radius (time, id) float64 1.631e-05 4.045e-05 4.259e-05 ... nan nan nan" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swifterdat" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "swifterdat['r'] = np.sqrt(swifterdat['px']**2 + swifterdat['py']**2 + swifterdat['pz']**2)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "swifterdat['r'].sel(id=100).plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swiftest file param.swiftest.in\n" - ] - } - ], - "source": [ - "inparfile = \"param.swiftest.in\"\n", - "paramfile = swio.read_swiftest_config(inparfile)\n", - "swiftestdat = swio.swiftest2xr(paramfile)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset>\n",
    -       "Dimensions:  (id: 12, time: 49)\n",
    -       "Coordinates:\n",
    -       "  * id       (id) int64 0 2 3 4 5 6 7 8 9 10 100 433\n",
    -       "  * time     (time) float64 0.0 121.8 243.5 ... 5.6e+03 5.722e+03 5.844e+03\n",
    -       "Data variables:\n",
    -       "    Mass     (time, id) float64 1.0 1.66e-07 2.448e-06 ... 7.407e-09 nan nan\n",
    -       "    Radius   (time, id) float64 0.00465 1.631e-05 4.045e-05 ... nan nan\n",
    -       "    J_2      (time, id) float64 4.754e-12 nan nan nan nan ... nan nan nan nan\n",
    -       "    J_4      (time, id) float64 -2.247e-18 nan nan nan nan ... nan nan nan nan\n",
    -       "    px       (time, id) float64 nan 0.103 0.0611 -0.6062 ... 29.09 nan -0.9879\n",
    -       "    py       (time, id) float64 nan 0.2898 -0.7245 0.7761 ... -24.15 nan -1.04\n",
    -       "    pz       (time, id) float64 nan 0.01423 -0.01347 ... -5.83 nan -0.2681\n",
    -       "    vx       (time, id) float64 nan -0.03214 0.02002 ... 0.002132 nan 0.007837\n",
    -       "    vy       (time, id) float64 nan 0.0105 0.001627 ... 0.001664 nan -0.01188\n",
    -       "    vz       (time, id) float64 nan 0.003806 -0.001133 ... nan -3.825e-05
    " - ], - "text/plain": [ - "\n", - "Dimensions: (id: 12, time: 49)\n", - "Coordinates:\n", - " * id (id) int64 0 2 3 4 5 6 7 8 9 10 100 433\n", - " * time (time) float64 0.0 121.8 243.5 ... 5.6e+03 5.722e+03 5.844e+03\n", - "Data variables:\n", - " Mass (time, id) float64 1.0 1.66e-07 2.448e-06 ... 7.407e-09 nan nan\n", - " Radius (time, id) float64 0.00465 1.631e-05 4.045e-05 ... nan nan\n", - " J_2 (time, id) float64 4.754e-12 nan nan nan nan ... nan nan nan nan\n", - " J_4 (time, id) float64 -2.247e-18 nan nan nan nan ... nan nan nan nan\n", - " px (time, id) float64 nan 0.103 0.0611 -0.6062 ... 29.09 nan -0.9879\n", - " py (time, id) float64 nan 0.2898 -0.7245 0.7761 ... -24.15 nan -1.04\n", - " pz (time, id) float64 nan 0.01423 -0.01347 ... -5.83 nan -0.2681\n", - " vx (time, id) float64 nan -0.03214 0.02002 ... 0.002132 nan 0.007837\n", - " vy (time, id) float64 nan 0.0105 0.001627 ... 0.001664 nan -0.01188\n", - " vz (time, id) float64 nan 0.003806 -0.001133 ... nan -3.825e-05" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swiftestdat" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "swiftestdat['r'] = np.sqrt(swiftestdat['px']**2 + swiftestdat['py']**2 + swiftestdat['pz']**2)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "p100swiftest = swiftestdat['r'].sel(id=100)\n", - "p100swiftest.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "dr = p100swiftest - p100" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "dr.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_gr_test/pl.swifter.in b/examples/rmvs_gr_test/pl.swifter.in deleted file mode 100644 index d0d4e7ff9..000000000 --- a/examples/rmvs_gr_test/pl.swifter.in +++ /dev/null @@ -1,40 +0,0 @@ -10 ! Planet input file generated using init_cond.py using JPL Horizons data for the major planets (and Pluto) for epoch 2021-01-28 -1 39.47692640889762629 -0.0 0.0 0.0 -0.0 0.0 0.0 -2 6.553709809565313959502e-06 0.0014751229680863789154 -1.6306381826061645943e-05 -0.1030256860922895 0.2897796047098886 0.01422904600374035 --11.74004209950937 3.8343124110162736 1.3902496665973592 -3 9.6633133995815387361564e-05 0.006759127649782299051 -4.0453784346544178454e-05 -0.06110218027254217 -0.7245466901305982 -0.01346904300924688 -7.311995449678243 0.5941125721336201 -0.4137913843379075 -4 0.00012002693582795246295385 0.0100447565675466429165 -4.25875607065040958e-05 --0.6061796342297583 0.7761214554702035 -3.4750047790977e-05 --5.054824314301841 -3.891667468503358 0.00019720338148272726 -5 1.2739802010675942316241e-05 0.0072464490746299085006 -2.265740805092889601e-05 -0.2751944175855944 1.51937688993241 0.02508924593104206 --4.835983593209577 1.344855094041679 0.14681413000004515 -6 0.037692251088985682938581 0.3552852357486060849 -0.00046732617030490929307 -3.200135438345358 -3.953498213518368 -0.05517737289975112 -2.111393749129838 1.8660266890185446 -0.05498941067210089 -7 0.011285899820091272946487 0.43763064566943408597 -0.00038925687730393611812 -5.607382165725712 -8.258649105608766 -0.07958445228024298 -1.5748468603228847 1.1414574661825514 -0.08250331331320372 -8 0.0017236589478267728883093 0.4690969274244374022 -0.00016953449859497231466 -15.28225422201768 12.53905314208462 -0.1514143582550325 --0.9198472198098231 1.0454390993472462 0.01574538863031621 -9 0.0020336100526728304385693 0.7807192056765467829 -0.000164587904124493665 -29.47483071169769 -5.147686530859088 -0.5733441819169969 -0.19191677740340274 1.1385110364087574 -0.027844325148353527 -10 2.9242167710294538257026e-07 0.05383468172776979939 -7.943294877391593783e-06 -14.14000920780611 -31.14141812522779 -0.7565722591093476 -1.073396108697069 0.23003123192799815 -0.33424529561177047 diff --git a/examples/rmvs_gr_test/pl.swiftest.in b/examples/rmvs_gr_test/pl.swiftest.in deleted file mode 100644 index 7bdc4a619165c705f845ed6e32d16145b1630c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmd;JU|`?`Vi4c}Vih1}0%B$$W&vVWAZ7z%b|41HgVb^XF-V;U5O)h@89a&KWpC;5 zy6y7p2QxVx4&70o{xw(3VP28sg60W&4o4nj zHuhE8I`D)RdaifZaR8YG!Uwhm9^Bu3$$p_)U{{U)^ZoUI=dJv6^@Y9STMv~u{~z|- zZrodacme-`^wP`Ab6XS+l*%z2`zNgFa5ptT*?PLj0ozx3zl>Gv55UZe(0yeor_yV` zz2t7>imBcETiu@a2w5=g|6tF0`rn3`_D&bIGE5!T?BD8tp?hikmi>~Kb2fD+9^OCe z-PNa8BOdKxHrG8*XrSYC>ds&A^=ZfztTZkN(=wwJ}Odf*9ZH( z+7^-F=AZ0SZ6vO)EIbQ0kN<~Bewp1j`xVZ|ZueE++W*h;iz?4eP5bY875e8+9kQRn z^R{4;`kMVeU)H{OFSm97`_9)Y{qhs+e;k^?ZrMC%fAo_0M7NZyaQ_}>V&wc+bK7pw znaeXjgh<*;`$Y5IFO#=lFYUp%aQiE}$0w?U(|i`&Kff+;m0z~q{<-Ge%{{g;_DxqZ zL{F_qu)pigq,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "dr = rmvsdat['r'] - whmdat['r']\n", - "dr.sel(id=slice(100,109)).plot.line(x=\"time\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_gr_test/swifter2swiftest.py b/examples/rmvs_gr_test/swifter2swiftest.py deleted file mode 120000 index 3539718d1..000000000 --- a/examples/rmvs_gr_test/swifter2swiftest.py +++ /dev/null @@ -1 +0,0 @@ -/Users/daminton/git/swiftest/python/swifter2swiftest.py \ No newline at end of file diff --git a/examples/rmvs_gr_test/swiftest_relativity.ipynb b/examples/rmvs_gr_test/swiftest_relativity.ipynb deleted file mode 100644 index 302934bc0..000000000 --- a/examples/rmvs_gr_test/swiftest_relativity.ipynb +++ /dev/null @@ -1,199 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "import swiftestio as swio\n", - "from astroquery.jplhorizons import Horizons" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swifter file param.gr.in\n" - ] - } - ], - "source": [ - "inparfile = 'param.gr.in'\n", - "paramgr = swio.read_swifter_param(inparfile)\n", - "swiftergr = swio.swifter2xr(paramgr)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swifter file param.nogr.in\n" - ] - } - ], - "source": [ - "inparfile = 'param.nogr.in'\n", - "paramnogr = swio.read_swifter_param(inparfile)\n", - "swifternogr = swio.swifter2xr(paramnogr)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swiftest file param.gr.in\n" - ] - } - ], - "source": [ - "param_file_name = 'param.gr.in'\n", - "config = swio.read_swiftest_config(param_file_name)\n", - "swiftestdat = swio.swiftest2xr(config)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "tsim = swiftergr['time'] / 365.25\n", - "varpigrsim = (swiftergr.sel(id=2)['omega'].data + swiftergr.sel(id=2)['capom'].data) * 180.0 / np.pi\n", - "varpinogrsim = (swifternogr.sel(id=2)['omega'].data + swifternogr.sel(id=2)['capom'].data) * 180.0 / np.pi\n", - "varpiswiftest = (swiftestdat.sel(id=2)['omega'].data + swiftestdat.sel(id=2)['capom'].data) * 180.0 / np.pi" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "obj = Horizons(id='1', id_type='majorbody',location='@sun',\n", - " epochs={'start':'2020-07-13', 'stop':'3024-07-13',\n", - " 'step':'1461d'})\n", - "el = obj.elements()\n", - "t = (el['datetime_jd']-el['datetime_jd'][0]) / 365.25\n", - "varpi = el['w'] + el['Omega']" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "dvarpigrsim = np.diff(varpigrsim) / np.diff(tsim) * 3600 * 100 \n", - "dvarpinogrsim = np.diff(varpinogrsim) / np.diff(tsim) * 3600 * 100 \n", - "dvarpiswiftest = np.diff(varpiswiftest) / np.diff(tsim) * 3600 * 100 \n", - "dvarpi= np.diff(varpi) / np.diff(t) * 3600 * 100 " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", - "JPL Horizons : 570.3933741520308\n", - "Swifter no GR : 527.4373381337329\n", - "Swifter GR : 570.37497883185\n", - "Swiftest GR : 570.3749787753405\n", - "GR - no GR : 42.93764069811709\n", - "Obs - Swifter : -0.018395320180843555\n", - "Obs - Swiftest: -0.018395376690250487\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEGCAYAAAB2EqL0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABGI0lEQVR4nO3dd3gUVRfA4d8lofeOdJBOgACB0HuRXqVKh4gogooKKqgoioAFC/LRUXoXKWIBpAihhN5rJJTQSyBAsjnfH7NgCCHshiSbct7nycPu7Nw7ZxLNycy9c64REZRSSqmnSebqAJRSSiUMmjCUUko5RBOGUkoph2jCUEop5RBNGEoppRzi7uoAYlO2bNmkYMGCrg5DKaUSjJ07d14WkeyRfZaoE0bBggXZsWOHq8NQSqkEwxjj/6TP9JaUUkoph2jCUEop5RBNGEoppRySqMcwIhMSEkJAQAB37951dSgqglSpUpE3b16SJ0/u6lCUUpFIcgkjICCA9OnTU7BgQYwxrg5H2YkIV65cISAggEKFCrk6HKVUJJLcLam7d++SNWtWTRbxjDGGrFmz6pWfUvFYkksYgCaLeEp/LkrFb0kyYSilVGK16/fZ/Pbpy7HStyYMF0iXLh2nT58mderUeHp6UqpUKfr3709YWBinT5/Gw8MjyvYfffQR48aNe2RbwYIFuXz5slNxNG3alOvXrzsbvlIqHlr884/83K4WqV7/lLSr/iHoxpUYP4YmDBd6/vnn2b17N3v37uXgwYMsW7YsTo4rIoSFhbFq1SoyZcoUJ8dUSsWe6WOGUWrUt5Q8fonN1YpQfvU60mXMGuPH0YQRD7i7u1OtWjWOHz8eI/199dVXeHh44OHhwTfffAPA6dOnKVmyJAMGDKBChQqcOXPm4VXJxIkT8fT0xNPTk0KFClG3bl0A5s6dS5kyZfDw8ODdd9992H+6dOl4//33KVeuHFWqVCEwMBCAhQsX4uHhQbly5ahVq1aMnItS6slmffcpixt74TVjGYfzpeH59ZvoO+1X0mXMFivHS3LTasP7+NcDHDx3M0b7LJU7Ax+2KO1Umzt37vDXX38xcuRIh9t8/fXXzJo16+H7c+fOAbBz506mT5+Or68vIoK3tze1a9cmc+bMHDlyhOnTpzNhwoRH+urfvz/9+/cnJCSEevXq8eabb3Lu3Dneffdddu7cSebMmWnUqBHLli2jdevW3L59mypVqjBq1CjeeecdJk+ezAcffMDIkSNZs2YNefLk0VtdSsWioKAgFvduQeW9FzifyQ1f7+dp9PF3ZM4c81cV4ekVhgudOHECT09PqlevTrNmzWjSpInDbd944w1279798Ct37twAbNq0iTZt2pA2bVrSpUtH27Zt2bhxIwAFChSgSpUqT+xz0KBB1KtXjxYtWrB9+3bq1KlD9uzZcXd3p2vXrmzYsAGAFClS0Lx5cwAqVqzI6dOnAahevTo9e/Zk8uTJ2Gy26HxLlFJP8edvS/izdS0q773Axrql8V67lb7TV5A/f+w/v5SkrzCcvRKIaQ/GMGKSiDzxs7Rp0z7xsxkzZuDv78/333//1H6SJ0/+cAqsm5sboaGhAEycOBFfX19WrlyJp6cnu3fvJmvW2P2LR6mk4tSpY6z74FW8/c5wJyVs7d4cn/fGxmkMeoWRyNSqVYtly5Zx584dbt++zdKlS6lZs2aUbXbu3Mm4ceOYNWsWyZJZ/0l4e3vz999/c/nyZWw2G3PnzqV27dpR9nPixAm8vb0ZOXIk2bJl48yZMzF2XkolZXMmfsGlNq2o7HeGrZULkvOXlfSK42QBcXiFYYwpDswPt6kwMAJYB0wE0gGnga4i8tjAgjHmBWA84AZMEZHRsR1zbAgNDSVlypRR7nPkyBHy5s378P3XX3/Niy++6FD/FSpUoGfPnlSuXBmAvn37Ur58+Ye3jSLz/fffc/Xq1YeD3V5eXkyZMoXPP/+cunXrIiI0bdqUVq1aRXnst99+m2PHjiEi1K9fn3LlyjkUs1IqciEhIcyfNIYyP87ibJYUpB7+CX0atnRZPCaqWw+xdlBj3ICzgDewCBgiIn8bY3oDhURkeCT7HwUaAgHAdqCziByM6jheXl4ScQGlQ4cOUbJkyRg7F2ft2bOHfv36sW3bNpfFEJ+5+uejVHxw+04Qs9/qRckdB8l2K4yArO4UmbWEQoWKxvqxjTE7RcQrss9cdUuqPnBCRPyB4sAG+/Y/gHaR7F8ZOC4iJ0XkPjAPiPrP3Xho4sSJdO7cmU8//dTVoSil4imbzcac17tSc91+zmdPy9beram4fF2cJIuncdWgdydgrv31fqAl8AvwIpAvkv3zAOFviAdgXZ08xhjjA/gA5M+fP4bCjRkPpq8qpVREh4/sx+9tHzxOXKOGDbZUzEvv2X+4OqxHxPkVhjEmBVaCWGjf1Bt41RizE0gP3I+sWSTbIr2XJiKTRMRLRLyyZ490HXOllIpXjh8/zIXunSh94hrby+djY/2ytJ2wwNVhPcYVVxhNAD8RCQQQkcNAIwBjTDGgWSRtAnj0yiMvcC6W41RKqVh19cplFo16k4LbdpHzto1/Rw6lT7serg7riVwxhtGZ/25HYYzJYf83GfAB1oypiLYDRY0xhexXKJ2A5XEQq1JKxYqNf69he6t61Fy1HSNwYEAPWsTjZAFxnDCMMWmwZjotCbe5szHmKHAY66phun3f3MaYVQAiEgq8BqwBDgELRORAXMaulFIxZfqY90g7cDCZboey720fGm7eR5cBQ5+9YxHYMx9WvfPsfUUiThOGiNwRkawiciPctvEiUsz+NVTs83xF5JyINA233yr7Ps+LyKi4jDumjRo1itKlS1O2bFk8PT3x9fV1qN2IESP4888/Adi4cSOlS5fG09OTLVu2sGrVqtgM2SGzZs2ibNmylC5dmnLlytG3b9+HNaXq1KlD8eLFKVeuHJUqVYrxJ9yVSggOH9nPjE71qDJtKWeypyb1zJl06PPGs3ccZoMNY2FCVVjqA2d3wP07z95vRCKSaL8qVqwoER08ePCxbXHpn3/+kSpVqsjdu3dFROTSpUty9uxZp/t5+eWXZdq0aSIiMn36dHn11Vedah8SEuL0MaOyevVqqVChggQEBIiISGhoqEydOlUOHz4sIiK1a9eW7du3i4jItGnTpEGDBpH24+qfj1Kx4datW/K/AS+Kn0cJ2VuyhEzq21KCbt+Kmc6DLon8Oljkwwwi05qI+P0sYrNFuztghzzhd6rLf6nH5ld8TBiLFy+W5s2bP7bd19dX2rRpIyIiy5Ytk1SpUsm9e/ckODhYChUqJCIiPXr0kIULF8rkyZMlc+bMUrBgQenUqZPky5dPsmXLJuXKlZN58+ZJUFCQ9OrVS7y8vMTT01OWLVsmIlZiad++vTRv3lzq1q37yPFPnTolJUqUkL59+0qpUqWkYcOGcufOHRER2bVrl3h7e0uZMmWkdevWcvXq1cfir1Gjhqxdu/aJ5x0+YRw6dEhKliwZ6X6u/vkoFZOCbt+Sv9eulPlNKsnB4iVkVstqsnnjnzHT+dXTInO7WIniwwwivw+PkW6jShhJuvggq4fChX0x22euMtDkyVVLGjVqxMiRIylWrBgNGjSgY8eO1K5dmwoVKrBr1y7Aut3k4eHB9u3bCQ0Nxdv70UdO+vbty6ZNm2jevDnt27dnxowZ7Nix42HhwPfee4969eoxbdo0rl+/TuXKlWnQoAEAW7ZsYe/evWTJkuWx2I4dO8bcuXOZPHkyHTp0YPHixbz00kt0796d7777jtq1azNixAg+/vjjh+tsPHDgwAEqVKjg0Lfot99+o3Xr1g7tq1RCtXfvds4P6EP+yyFkBTZ3akjfj76Nmc5PbYAF3cEWArXehsJ1oED1mOk7Ckk7YbhAunTp2LlzJxs3bmTdunV07NiR0aNH07NnT4oUKcKhQ4fYtm0bb775Jhs2bMBmsz21eGBEv//+O8uXL3+4jOvdu3f5999/AWjYsGGkyQKgUKFCeHp6Av+VLb9x4wbXr19/WHiwR48eT61rtW/fPrp168atW7f47LPP6NixIwBdu3bl9u3b2Gw2/Pz8nDonpRKStX/8Qoph75HtfhibXqzH87Ua0bdhDBSnCNgJf4+GY79D1qLQdQFkKfzs/TooaSeMKK4EYpObmxt16tShTp06lClThpkzZ9KzZ09q1qzJ6tWrSZ48OQ0aNKBnz57YbLbH1u9+GhFh8eLFFC9e/JHtvr6+UZY4D18U0c3NjeDgYIePWbp0afz8/Khbty5lypRh9+7dvPbaa4/0MXv2bMqVK8fQoUN59dVXWbJkSRQ9KpXwLJs/hVTff0ueKyHcSJOM62M/p1/j1s/ecdAl+O1d2L8YUmeGesPB+2VImf7Z+3aCljePY0eOHOHYsWMP3+/evZsCBQoAVmnyb775hqpVq5I9e3auXLnC4cOHKV066nU70qdPz61btx6+b9y4Md999501SAUPb3VFR8aMGcmcOfPDRZh+/vnnSMucDxs2jCFDhhAQEPBwW2QJJ3ny5Hz66ads3bqVQ4cORTsupeKbXxfPJO9nX5Lqfhhbqxcjw7QZ1I+JZHH7MsxoBodWQO13YfA+qDUkzpMFJPUrDBcICgpi4MCBXL9+HXd3d4oUKcKkSZMAaw2KwMDAh+thly1blhw5cjxcrOhJ6taty+jRo/H09GTYsGEMHz6cwYMHU7ZsWUSEggULsmLFimjHPHPmTPr378+dO3coXLgw06dPf2yfpk2bcunSJZo0aYLNZiNTpkx4eHjQuHHjx/ZNnTo1b731FuPGjWPq1KnRjkup+GDDulWcnDiOSnvOcyVDMjJOnEq/8pGWunOcCBz61bqiOP4nhIVCtyVQsEbMBB1NLilvHlfiY3lzFTX9+aiEZPHPP1Jk9LeIgR0VC9Hk84nkyR0DRU99J8HqtyFtDijRFCr0gDyOTSp5VlGVN9crDKWUctKDq4pyB89zMZM7+abNpW9xj2frNOgi/DbMmgF15woUawKdZkMyt5gJOgZowlBKKQcFBQUx590+VF23lzLusK9Ydip89A0lnjVZ3LoAUxpC0AUo2dIan2jwUbxKFqAJQymlHLJy2Szcx42h5uUQdpTKhvcX/6N70VLP1unN87DpKzj6m3VV0fs3yFMxZgKOBZowlFIqCpevXGTZkN5U3XqCa2mT4fd6d7oNGPbsHR9aAcsHwv3bkK8ytPohXicL0IShlFJPtHLZLNJ+PprqN2xsqZiXxmOnUuNZB7Xv37bGKvxmwnPloO0UyF4sZgKOZZowlFIqgnPnA1g9ZRwVFqzhZppkHBo+iN5dn3F55dD7sHsWbPwKbgRAjTegznvgniJmgo4D+uCeC8TX8uaBgYF06dKFwoULU7FiRapWrcrSpUsBWL9+PRkzZqR8+fKUKFGCIUOGPPPxlIqPls75H/82a0S12Wu4kDkFOabPoe2zJosz2+C7CrDiDUiXE3qutAa1E1CyAL3CiHNbtmxhxYoV+Pn5kTJlSi5fvsz9+5EtY/64kSNHPnw9e/ZshgwZQq9evR4WH2zatGkUrR8VGhqKu/t/P34RoXXr1vTo0YM5c+YA4O/vz/Ll/y1sWLNmTVasWEFwcDDly5enTZs2VK8e+wXPlIoLl69c5PdFMygzfjqBmdy58O4gmrXtQfLkyaPXoQjs+hmOroHjf0H6XPDSYni+PjzlYdz4Ks4ShjGmODA/3KbCwAhgPdayrKmAUGCAiGyLpP0bQF9AgH1ALxG5G8thx7jz58+TLVu2h3WbsmXLBsC2bdsYPXo0S5Ys4ZdffqFTp07cuHGDsLAwSpUqxcmTJ+nZsyfNmzfn+vXrLFiwgDVr1vD777+zefNmgoOD2bRpE8OGDaN58+YMHDiQffv2ERoaykcffUSrVq2YMWMGK1eu5O7du9y+fZu1a9c+jGvt2rWkSJGC/v3/+0uqQIECDBw48LFzSJ06NZ6enpw9ezaWv1tKxb6QkBDmdm5Apf0XKWfAP0cKysxeTr68BaLfqS0EVg2BnTMgc0EoUh+afwPpssdQ1K4RZwlDRI4AngDGGDfgLLAUmAx8LCKrjTFNgTFAnfBtjTF5gNeBUiISbIxZgLWu94xniemLbV9w+OrhZ+niMSWylODdyu8+8fP4Wt7cmfLk165d49ixYw9LmCiVUIWEhPBTr+ZU23+RbWVzcT9dOup9MC76ySLoEvj+CCfXw9md1jhFvRGQLHHc/XfVLan6wAkR8TfGCJDBvj0j1rrekXEHUhtjQoA0UewXr8Xn8ubhvfrqq2zatIkUKVKwfft2wEpkZcuW5ciRIwwdOpRcuXI5efZKxQ/bfDdy+qO3SHfnHtUC77OpehF6T1qGm9szPCh3+wr81BIuHYFM+aHNJCjXMeaCjgdclTA6AXPtrwcDa4wx47AG4atF3FlEzto//xcIBn4Xkd8j69gY4wP4AOTPH/X0t6iuBGJTfCxvXrp0aRYvXvzw/Q8//MDly5fx8vqvpMyDMYyjR49So0YN2rRp83D9DKUSikOH9xI06BUKB9sIzJySjc296fPF1Ogni6BLsHs2bB5vTZnttsRa0CgRivPrJGNMCqAlsNC+6RXgDRHJB7wBPFa+1BiTGWgFFAJyA2mNMS9F1r+ITBIRLxHxyp49/t0vjK/lzevVq8fdu3f58ccfH267cyfyReSLFSvGsGHD+OKLL57ar1LxRXDwHRZM/5aL3TuT+baN88Pfpdn63fiMmxH9ZHFuF3xXEf780Fpts99fiTZZgGum1TYB/EQk0P6+B/BgJZ2FQOVI2jQATonIJREJse//2JVIQhAUFESPHj0oVaoUZcuW5eDBg3z00UdA5OXNy5Yt61B584MHD+Lp6cn8+fMZPnw4ISEhlC1bFg8PD4YPH/7UuIwxLFu2jL///ptChQpRuXJlevTo8cSk0L9/fzZs2MCpU6ec+wYo5QJ/rF7M5vrelPniR1LYhAujRtCifc/od3h+L/zyKsxsBakzwitboMdyK2kkYnFe3twYMw9YIyLT7e8PAa+IyHpjTH1gjIhUjNDGG5gGVMK6JTUDa6Hy76I6lpY3T3j056Ni2oJp31Dsq/9xO5XhWMfWNO89mGxZc0Svs+DrsG4UbJ8CKdJD4drQ6BNrJlQiEW/Kmxtj0gANgZfDbe4HjDfGuAN3sY8/GGNyA1NEpKmI+BpjFgF+WFNvdwGT4jJ2pVTCcftOEBv++JUzvy3Be8N+zmdJTuFp86ge3WKBYWGwZw788SEEXwWvPlDvfWu51CQkThOGiNwBskbYtgl4rOKWiJwDmoZ7/yHwYWzHqJRK2IKCgvijTW1KnLlDQWBniaxU/3o6hQoVjV6H53Zbz1QEbId83tB0KTxXNgYjTjj0SW+lVKLh73+C9UP6UPnMHTY296Z0q5d4qWaD6HUmAhvGWbeg0maD1j9C2U6J5pmK6NCEoZRK8H5dPJN0Y8eS44aNygIba5fCZ9yM6HUmYj2hvWcenNkKZV6EpuMgdaYYjDhh0oShlErQdu7YTJbPvyA0mWFzndIUadsNn4atotfZ/TuwuC8cWQk5SkGjUVD11QRb+ymmacJQSiVIW/9Zx8nR71Pu6DXc3OHS2E/wadIuep0dWQ1751sr4J3xhRdGg3d/TRQRJN2bcS4Un8qbX79+nQkTJjzxcy15ruKjNSsXkrz/AEqcvsbm2qW4P3USDaObLI79CfO7WVVlz/lBm4lQ5RVNFpHQK4w4Fl/Kmz/wIGEMGDDgsc+05LmKb7b+s44jX39MqWOB3EmZjLT/m4JPharOd3TvFmz5wSrlsfVHyF4Ceq6A5GkS3BoVcUmvMOJYZOXNc+fOzbZt22jbti0Av/zyC6lTp+b+/fvcvXuXwoULA9CzZ08WLVrElClTWLBgASNHjqRz586MGDGC+fPnP3zS+/bt2/Tu3ZtKlSpRvnx5fvnlF8CqSFu5cmU8PT0pW7Ysx44dY+jQoZw4cQJPT0/efvvtR2LVkucqPvll/lR47VU8jgRyrEBmkn31NRWikyzu34G5nWH95/DPt1CgmpUsUmfSZPEUSfoK48Jnn3HvUMyWN09ZsgS53nvviZ+7srz5xIkTGTRoEF27duX+/fvYbDZGjx7N/v372b1792OxaslzFR+s/eMX/p38DZX2XuBSRjds47+hS3SmyopA4H5YPtB6tqLdVCjaCFKm19tPDkrSCcMVXFnevGrVqowaNYqAgADatm1L0aLOPcikJc9VXLLZbEx9vz/VftlEFjfYUvV5WoyeRM6cuZ3v7PweWNofLh6E5Gmh0xwo4fwt3KQuSSeMqK4EYpOrypuXLFkSb29vVq5cSePGjZkyZcrD212R0ZLnylV27fLlyPBB1Dx+gz1FMlL1h9n0LfB89Do7vBIW9rLKeLQYD8WaQPqcMRtwEqFjGHHMleXNT548SeHChXn99ddp2bIle/fufaxteFryXMW1f/89xeQ+LUn2Uk9Knr7BxhZVaLd0IwWcTRY3z8OuWbBsAMx/CXJ5wCv/QMWemiyegSaMOObK8ubz58/Hw8MDT09PDh8+TPfu3cmaNSvVq1fHw8PjsUFvLXmu4tLevds51b451TYfY3fpXIT9PAOfsdNJnjy5cx3dvgxTG1nlx/cvhso+0P0XSJv16W1VlOK8vHlc0vLmCY/+fJKekJAQViycRvrvvydzUCjnRrzr/FoVIhCwAy4fhS3fw9WT0HUh5K0EyVPHStyJVbwpb66UUuFN/WQwFRasoUQIXE1n8H93EG2js7DRus9gwxjrdeZC0OEnKKQz9mKaJgylVJyz2WysXPITXvPWcDpXai7XqUXrAe9TPauTyyqf32ONVWybBOU6Q7WB1kN4yaK55KqKUpJMGCLy1HEBFfcS8+1RZbl65TK/DOhA8eMXKHpbuJbWUHLiLIo5u7BR6H3reYq988AtpVVRtsV4cE8ZO4ErIA4ThjGmODA/3KbCwAhgPTARSIW1mt4AEdkWSftMwBTAAxCgt4hscTaOVKlSceXKFbJmzapJIx4REa5cuUKqVKlcHYqKRb8M7ESVPefZUTo7d0uVoVqnfs4lC1sInFgLO6bD0dVQ402oMRhSZYy1mNV/4ixhiMgRwBPAGOMGnAWWApOBj0VktTGmKTAGqBNJF+OB30SkvTEmBZAmOnHkzZuXgIAALl26FJ3mKhalSpWKvHnzujoMFcMuXrzAstFvk3/HHqpcDGFTzWL0m/yL8x0FX4MFPeDU32CSWRVlq7wS8wGrJ3LVLan6wAkR8TfGCJDBvj0jcC7izsaYDEAtoCeAiNwHHKvYF0Hy5MkpVKhQdJoqpZzk73+Co11aU/NKKEfypmZjk3J0HfXj0xuGd+cq7FtkDWoHX4fm30DpNrqgkQs4nTCMMWmBuyJie4bjdgLm2l8PBtYYY8ZhPRdSLZL9CwOXgOnGmHLATmCQiNyOJD4fwAcgf/78zxCiUupZrFm5kNAxn5L3eih7hvSjU983ne/k4HLreYp7N631tJuMgdyeMR6rcsxTH9wzxiQzxnQxxqw0xlwEDgPnjTEHjDFjjTFOFSSy305qCSy0b3oFeENE8gFvAFMjaeYOVAB+FJHywG1gaGT9i8gkEfESEa/s2Z2ccaGUemaHDu9l5ot1yPvWCLLdDGHfgG7OJ4ub52CJDyzoBtmKgs/f0HuNJgsXc+QKYx3wJzAM2C8iYQDGmCxAXWC0MWapiMxy8JhNAD8RCbS/7wEMsr9eiDWwHVEAECAiD1YaWsQTEoZSynUWTP2aAt9PxvO+8E/NYjT9+Du8cztxpX/jLGz6Cvx+sh7Gq/W29aWzn+IFRxJGAxEJibhRRK4Ci4HFxhhnnt3vzH+3o8Aas6iNNVuqHnAsYgMRuWCMOWOMKW4fPK8PHHTimEqpWLRt63p2L/mJqiu2cDZrctJ88gX96jRxrpOLh2B6U2txo/JdocYbkLlgrMSrouepCSOyZBGdfQCMMWmAhsDL4Tb3A8YbY9yBu9jHH4wxuYEpIvKgBvFAYLb9ltZJoJcjx1RKxZ6goCDmvdaRqltPUhM4kjc1lX5aRh5HryrCwuDcLgjYBhvGglsKq0hg9mKxGreKHocHvY0xkd2EvAHsFJHdjvQhIneArBG2bQIqRrLvOaBpuPe7gUjrmyil4t7lKxdZ3bcd1Q9d5h+vfBTtM5hmNRo6Vyzw14HWk9oA+atZD99psoi3nJkl5WX/+tX+vhmwHehvjFkoImNiOjilVPxzIfAcf/duQ9kTN/ECNjathM9XPzneQdAlOLsTTq63kkWVAVChB2QvrivfxXPOJIysQAURCQIwxnyINfhcC2uaqyYMpRK5w0f2c9KnK6Uv3mdTzeKkKe+Nz4Bhjnfwry/MbAG2e4CBki2h0ada+ymBcCZh5OfRh+VCgAIiEmyMuRezYSml4pMzAf789slgSvgd5bm7Yewb3It+L7/jeAe3r8CJv+DPjyDDc9B6orWoUcr0sRazinnOJIw5wFZjzINn+lsAc+0P8umMJaUSqQMHdnPmle5UvRTC0XxpuPXqW3Ru1cWxxiKw/nPYPB5C70KqTNB9GeQuH5shq1jicMIQkU+MMauAGoAB+ovIg9WJusZGcEop1wkKCmLOh69S8Y9t5BQ4OMSHDn3ecLyD0HuwbpSVLDzaWaXHc3qAm5Mr6Kl4w5lZUgYoCWQUkZHGmPzGmMqRVZZVSiVsG9av5t7771DzSih7ns9IgfdH0aFafcca20LAbyZs/ApunrUGtFuM1wHtRMCZW1ITgDCsh+tGArewHtyrFAtxKaVc4MCB3WwbNYTye88SnMKwa3BPuvR/1/EOAg/AkpchcJ9V+6nVD1C4jiaLRMKZhOEtIhWMMbsAROSa/SE6pVQiMG/yOAr8OI0K94VdHs/h9f44upSp4Fjj62fg9CZY9TakSAMdZ0OJZpooEhlnEkaIfR0LATDGZMe64lBKJWAXAs/xR/+OeB26zNks7oR8+QU96zZ9ekOAkGD4fTjsmAoSBtlLwkuLIWOe2A1auYQzCeNbrAWPchpjRgHtgQ9iJSqlVKyz2WzMnfA5uefMo/x1GxsblKXT55PIkN6B1etC78GV49Y02WN/QKW+1prauTy0UGAi5swsqdnGmJ1Yhf8AWovIodgJSykVm/z9T7D59W5UPHKNs1ncOfrBIHy69nes8dWTMLsDXLHXCW3+DXhpabek4KkJ4wk1pACaGGOaiMhXMRyTUiqWhISEcODgbs693hePy/fZ2NSLbqP+R+rUDq54fHozzH8JEGj5PeQsDXkcHOdQCZ4jVxgPHsUsjjUjarn9fQtgQ2wEpZSKeb+vWID7pyN57rqNfMlg/6Be+Dj6tPapDbByCFw+AlmLQpf5kPX52A1YxTuOlDf/GMAY8ztWLalb9vcf8d+qeUqpeGzZ3MkUGvUVN1MnY2OrahSs2ZjOzTs8vWHIXfCdCGs/tdamaPQplO+m62knUc9SS+o+UDBGo1FKxRibzca0EQPIvdmX/FfvcSmDO/lnzqdm0VJPbywCe+fDX5/AzQAo1gTaTNREkcQ5kzB+BrYZY5ZiTa1tA8yMlaiUUs/k3r17zO3RhBq7z3MyZwoOFc5CiQ/GUOxpyUIEzvrB5q/h0K+QuwK0+REK1YqbwFW85swsqVHGmNVATfumXiKyy9H2xpjiwPxwmwoDI7CWZp0IpAJCgQFPKjdifw5kB3BWRJo7emylkpK/163i7Nef4n30GhvrlKLXd/McW9Qo+BqseAMOLAW3lNDgI6g2CJIli/WYVcLgyCwpIyICICJ+gF9U+zyJfS1uT/v+bsBZrOc6JgMfi8hqY0xTrHU16jyhm0HAISDD0+JWKqnx9z/B+iF98NoXSCZ3JxY2EoGd063bT/duQt0PoHI/vf2kHuPInw7rjDEDjTGPLNJrjElhjKlnjJkJ9HDyuPWBEyLij3V760ECyAici6yBMSYv1ip/U5w8llKJ3uEj+znctQ0VDgTyT41ipFu+zLFkEXgQ5nS0rixyloZ+66D225osVKQcuSX1AtAba+2LQsB1IDVWsvkd+NrRNb3D6QTMtb8eDKwxxoyz91ntCW2+Ad7hv2m+kTLG+AA+APnzO7gQvVIJ1K5dvuxd+yuF5y0lx90wDr39Cv16vf70hvdvW09pb5sMKdJC48+spVK19pOKgnnKnaRHdzYmOZANCBaR69E6oFWw8BxQWkQCjTHfAn+LyGJjTAfAR0QaRGjTHGgqIgOMMXWAIY6MYXh5ecmOHTuetptSCdLP40dSbtJcktvgYsZk3Bv+IY2eNlXWFgK3zsPifnDGFyr7QJ2hkCZL3ASt4j1jzE4R8YrsM2dmSSEiIcD5Z4ynCeAnIoH29z2wxibAeq4jsltO1YGW9jGOVEAGY8wsEXnpGWNRKkGa+smbVJmzmhPPpcLttTepVrcpmTNnjbrRiXWwbADcOgfJ3OHFGVC6dVyEqxIJpxJGDOnMf7ejwLraqI01W6oecCxiAxEZBgwDCHeFoclCJSn37t1jTq9mlN97lmqhcKBAOmr9/Cs5cuSKumGYDQ4th0W9rae0a31pTZfVkh7KSXGaMIwxaYCGwMvhNvcDxhtj3IG72McfjDG5gSki4mCdZaUSr6tXLrPi5XZU2X+R7R45uJs3L50+mRB1Zdng67BiMBxYBgjkqwLdllhjFkpFgzNLtPYRkanPcjARuQNkjbBtE1Axkn3PAY8lCxFZj3U1olSid/XKZRZ99BpFt++n0nUbGxt54vPt3Kc3vHEWfm5tVZat1BfSZoMqr2iyUM/EmSuML40xXbEertsGzBWRA7ETllLq/PkAtnZvRc0zdziSNzWXXu6Jz9NmQN08D1u+h91zrAHu7suhYPW4CVgles4kjCvAp0AKrAfwFhhjvhWR/8VGYEolVTabjcUzviXnpCkUuRWGb9+29Bwy6ukNd8+1bkGFhVrLo9Z6x1rQSKkY4kzCuCEia+2vfzPGjAd8AU0YSsWQbVvXEzDiLcr8e4cLmdw49fE79HzxKYsThdlg/WjYMMaq+dTiW8hSKG4CVkmK04Pexph3sZ7FyAjcivGIlEqCbDYb0z56Ha9la8mfDDa1q0XHoWOiHtS+eR6WvQLn90DwVSjXBVp8o0ukqlgTnVlSi7FKe7QCPovZcJRKepbO+R/JJ/1IjQv3OFAgHUXGTKBfuUpRN7p0BGa1swoGerSF5+tB6TZxE7BKspxJGJmNMflE5Dhw3BgzGdgFrIyd0JRK3G7eusHS3q2ovC+QK+mS8U/XJnQf+kXUlWV9/2dNk714wKoo23Ml5PaMq5BVEudMwsgArDfGXAYOApkAW2wEpVRiZrPZmP+/saRdPJ/KZ++ysU4pXvx8EjWielLbFgrrRsGmryBHKcjnDU3HWqvgKRVHnEkYdYH9gDfW+t6CXl0o5ZRr167wa7+2VNp/kWtpDVt7tMBn2JgnN7h/B7b9D/YtgsD91vKoLcZDMre4C1opO2cWUNprf7nF/qWUcsKJk0fY+3IXKp65w8YGZek2djrVUqd5coPbl2FuZwjYBrnKQPtp4NEu7gJWKgJX1JJSKkk5fz6Av/u2p8yJGxRJBtv7tsUnqucqQu7Cnrmw9hO4FwQdfoJSreIuYKWeQBOGUrFo1y5fzg/yofTl+/xTqwQF27xEzyZRXCUcXgWrhsDNs5C3sjVNNmfpOItXqag4U0vqNWC2iFyLxXiUShSWzJ6I7eepFDwfRE6B/YN708/n7Sc3uOYPf4yAg8sgR2loPQEK1dYFjVS84swVRi5guzHGD5gGrHnaOt5KJUWzJ3yOx4SfuJk6GYeLZKfw4A/oXLNR5DtfPwMbxsLu2WDcoN5wqD4I3KKYWquUizgz6P2BMWY40AjoBXxvjFkATBWRE7EVoFIJgc1m46cvPyDlpr+pcPQap3OkoOi0+dQsUuLJjU7+DQu6Q0gwePWBGoMhQ+44i1kpZzm74p4YYy4AF7Cq1mYGFhlj/hCRd2IjQKXiu9t3gljYswVV9l7gelrDxjql6PDFFDJlzBx5g4Ad8OtgCNxnLWjUdQFkKRynMSsVHc6MYbyOtZzqZaxlVN8WkRBjTDKsVfI0YagkJzj4Dku7vID34StsrOdBn+/mUdUtimckds6AlW9B+tzQZCyU6wipoqgXpVQ84lDCMMYYoBzQVkT8w38mImHGmOYO9FEcmB9uU2FgBNZiSBOx1uoOBQaIyLYIbfMBP2GNo4QBk0RkvCOxKxUb/v33FH98MACPff5UDBY2NvfGZ9yMyHcWgR3TrAHtUxugSANoNxVSZ4rDiJV6dg4lDPutqPIRk0W4zw850McRrHU0MMa4AWeBpcBk4GMRWW2MaQqMAepEaB4KvCUifsaY9MBO+22wg47Er1RMOnRwD5d7dKFKUBh+pbJj6r2Az6vvRb5zyF1Y/Tb4/WSV9Kj5FtQZpoPaKkFyZgxjizGmkohsj4Hj1gdOiIi/MUaw6lSBVTL9XMSdReQ8cN7++pYx5hCQB6umlVJx4vqNa6yeP4UMs2eR+24YJz8dSrd2PSLfOfAgbJsEZ3zh4kGoOQTqvg/JksVt0ErFIGdrSfU3xpwGbgMG6+KjbDSO2wl4sDDxYGCNMWYckAyoFlVDY0xBoDzW4k2Rfe4D+ADkz58/GqEp9bjJ77+M1/INeIZAcAo44NOVl56ULE5tgHkvgdggcyHoPA+KN4nbgJWKBcbRRymMMQUi2/6k21RR9JMC6yqitIgEGmO+Bf4WkcXGmA6Aj4g0eELbdMDfwCgRWfK0Y3l5ecmOHTucCU+pR5w/H8Bfi6bjOWEOR/KnJaR9J17o0OfxGVBhNuu207Hf4cgqyFoEui2FTPpHi0pYjDE7RcQrss+cucJ4wp9TjHQyniaAn4gEhut3kP31QqwZWI8xxiTHWrxptiPJQqlnce3aFZa83hUvP38q2uBCJjeqzVjGc8/lfXzne7dgUR84tgYy5rPGKWq+BSnSxn3gSsUiZxLG7XCvUwHNgacOdkeiM//djgLraqM21mypelhTdB9hn6U1FTgkIl9F45hKOcxms7GiT2uqHLzMNs/cuFetRY2WXR5PFiJw9SQsfRnO+kGzL6FSX9cErVQccOZJ7y/Dv7ePOSx35mDGmDRAQ+DlcJv7AeONMe7AXezjD8aY3MAUEWkKVAe6AfuMMbvt7d4TkVXOHF+pqNhsNhbP/A73ebPw+vc2G1+ogM83syPf+dQG+G2YtUZFsuTw4gwo1TJO41Uqrj1Ltdo0WM9SOExE7gBZI2zbBFSMZN9zQNNw+2gVNhVrHqxVUebMHa6mM2xqVY0+n02KfOfjf8HsFyFTPmg6zlpPO+vzcRuwUi7gzJPe+7BW2QNwA7Lj/PiFUvHO0jn/I9O331E4yMam9nXo+O5oqqeP8PT17Suwdz6c3gQn1kKOktBrNaTKEHmnSiVCzlxhhH+aOxQIFJHQGI5HqTjj73+Cte/6UGX3OS5mTIb/h+/Q78Vej+8YEgw/t4IL+6xpsmVfhDrvabJQSY4zYxhOTZ9VKr6y2Wz8NGYYJReuoFKwsKlmMdqNnkqWrNke3TFgB+ycDmd3wcUD0GkulGjqmqCVigecuSU1ExgkItft7zMDX4pI71iKTakYZbPZmPP9p6T/9ReqBARz/LlU3P78Q/o1bv34zn4/w/LXIGUGyOkBzb/WZKGSPGduSZV9kCwAROSaMaZ8zIekVMyz2WxMfbUDNdcf5GKGZGxqX4fuw78hZcqUj+4YdMmqKPv3aChcFzrOgpTpXBKzUvGNMwkjmTEm84MlWo0xWZxsr5RL/L5iATe/H0vN00FsrZCHLtNXUjtiogi5C2veg10/g+0+FG0E7aZoslAqHGd+4X8J/GOMWYQ1W6oDMCpWolIqBthsNqb3bk5139PcTG3Y2KoavT6dSPLkESrFXtgHvw6CszvBqzd4vwLZi7kmaKXiMWfWw1gH7MB6GttgrY2h1WJVvHTgwG62jHmP6r6n2eKVj8ZjpuCdO0Jdp9uXYd0o6xZUqkzQ4Wd9+E6pKDizHsYyEamIlhRX8djx44fZPKw/XvsDqS6wtUIeesxcjVv4VfBsIbB9Cqz/HO4FQeWXoc67kPoJS6oqpQDnbkltjcH1MJSKcdeuXeFwv054XrzHP1WL8HznvnSv1/y/ZBF6HzZ+CXvmwPV/rSe0G38OOUq4NnClEghXrYehVIxZ9cscbkz5jmL+1yl0H3a92oV+A4c/ulPwdVjcF47/Yc1+ajIWijUGoxVnlHKUMwlDV4BR8c60UUPwnrWSoFSG3WXzkaZWQ17yefu/HYKvwZYJ4DvRKkPeYjxU7OmyeJVKyJxJGP8CXYHCIjLSGJMfyAXoE+Aqzp04eYT1Hw6i2nZ/DhZIS7UZy/COWH781gWY1hiunYaSLaHW2/CcXhArFV3OJIwJQBjWLKmRwC2sBY0qxUJcSkXKZrMx9bWOVNlwgCo22OxdkPbfznl0BbyLh62SHodWWFcYvddA/iquC1qpRMKZhOEtIhWMMbvg4ZPeKWIpLqUeExx8h9n921PT9xQ7SmenwGtD6Vs3QrmOrRPht3fBPRXkrwq139FkoVQMcSZhhBhj3LCXODfGZMe64nCIMaY4MD/cpsLACKyV9iZireIXCgwQkW2RtH8BGI9VWn2KiIx2InaVgF29cplFY4eSa9tOqp+7y+Yqhek1dXm42U/34MAy8N8MfjOheDNo+R2kzRplv0op5ziTML4FlgI5jTGjgPbA8Kib/EdEjgCeAPbEc9be32TgYxFZbYxpCowB6oRva9//B6zV+gKA7caY5frgYOLn73+CPb3aU/PcXQIzurGlWzP6vj/uvx0CD8CcjnDjjFUosFQraDMJkqdyXdBKJVLOlDefbYzZCdS3b2olIoejedz6wAkR8TfGCPBgYYGMWGt8R1QZOC4iJwGMMfOAVuhDhInW3r3bOb5vJ+kn/ECB66HseKUT3QZ9+N9fEmE22DULfh8OKdLCS4vh+fo6TVapWPTUhGGMibhu94P/IxsbYxCR6NRS6ATMtb8eDKyxrxGeDKgWyf55gDPh3gcA3tE4rkoAFs38nqJjfqCkDe6kgONDX6dbt1f+22HbZNgwFoICrXGKdlMgY94nd6iUihGOXGFUxfplPRfw5RnX1rYPlLcEhtk3vQK8ISKLjTEdgKlAg4jNIulKItmGMcYH8AHInz9/ZLuoeGzmVyMoO30hFzIn53KXzpSqWo925e1/G4TZYN1nsHEcFKplrVFRvKleVSgVRxxJGLmwxg46A12AlcBcETkQzWM2AfxEJND+vgcwyP56ITAlkjYBQL5w7/MS+a0rRGQSMAnAy8sr0qSi4p+ZX40g57JlVL4YwrHcqSg6YSaNS9ifmbhzFbZNgqNr4JwflO9mPYCXzC3qTpVSMSrZ03YQEZuI/CYiPYAqwHFgvTFmYDSP2Zn/bkeB9Yu/tv11PeBYJG22A0WNMYXsVyidgIi3ylQCFBISwqT+7ag8aSEAG1tXp/6KjZR8kCyunoKpjeDvL+D+bWj9ozUDSpOFUnHO0fLmKYFmWL/sC2LNmFri7MGMMWmwrlZeDre5HzDeGOMO3MV+O8kYkxtr+mxTEQk1xrwGrMGaVjvtGa5wVDyxeePv/DvmQ2oeu46v53O0n7KcdOnSgQgcWArX/OGf70Bs0HMVFKjq6pCVStKMSNR3bexreXsAq4F5IrI/LgKLCV5eXrJjxw5Xh6EiuHzlIsve7EnVbacIdQPfF6rQ54sp1nMVIrB+tLVEKkCWwtBlIWQr4tqglUoijDE7RcQrss8cucLohlWdthjwuvlvgPFBtdoMT2qoVER7924n4LW+VL14n61e+an54df4FC1lDWif2Qabx8PhFeD5EjQcCakygpuuBKxUfPDU/xNF5KnjHEo9zcplszj363y8th0nl4G9b/Siz8vvWB/ePA8Le8AZX3BLYSWKqgMhmf6np1R8on+6qVg39ePBVJu7hgIG9hTPQuF3RtK5mv35z9ObYVEva+W75l9DqdaQJotL41VKRU4Thoo1u3b5svuL96iy+xz7C6aj2rTFdH2wrnbADvjrYzi1AbI8D91/gRwlXRuwUipKmjBUrJjy8etUXPQHFcJga+WCtPn6Z7JkzWaNVfz1sTVWkS4n1P8QKvWFVDoUplR8pwlDxagTJ4+w9vN3qLHxKAcKpKPQqG/o41Udgi7B/sXwz/fWw3cVe0GjTyBleleHrJRykCYMFWOmff4OFWb/So1Q8C2bi44zV5I6dRo49ifM7wqhdyFjfquabLmOrg5XKeUkTRjqmQUH32HWgA7U2HKCw/nSkPGdEfRs2Mqa/bRhlFUsMHtxaPYl5C4PbsldHbJSKho0YahoCwkJYfrbPSm1aTc1gsLY7F2Qzj8uJG2adFaS+OND66qidGtoOk5nPymVwGnCUNHi57eFo8PfoOaJG+wrlB7/3m3oO2AYXNgPf/xorVVRpAE0HWs9ra2USvA0YSinnD8fwIoPB1J582FKGNjYugZ9Rk3EjTBrMaN/vgXjBlVfsx7A0yKBSiUamjCUw34e/zFFZs6nxh1hW5mclPtgLD5lveDCXlj1DpzZas1+qjdc19NWKhHShKGeymazMX3kYKou+JNTOVNy/aN36dGys1V6fHJdOLcLkqeFtlOg7IuuDlcpFUs0YagnunnrBvNGDibPNj+qB97nYIG01J6zimxpksPaT2Hrj9Ytp2ZfQcmWkC67q0NWSsUiTRgqUjabjcX92lJz9zn8sydnc+eGdHtjBCl3TbMevrt3A0q3gQYfQeaCrg5XKRUHNGGoR9y8dYOdvhs4Nf1bqu4+x8bapfD532LrmYpZLeDiQSjeDOoOg1xlXB2uUioOxVnCMMYUB+aH21QYGAFUBYrbt2UCrouIZyTt3wD6AgLsA3qJyN1YDDnJOXR4L4E9upDrho3sBjZ7F6TH8BGw8UvYMsF6pqLbUni+nqtDVUq5QJwlDBE5AngCGGPcgLPAUhH55sE+xpgvgRsR2xpj8gCvA6VEJNgYswBrXe8ZsR54EvHbr/MJ/epz8tyx8U/nRpR5oT19kx2BKbWsHQrXgUaf6lWFUkmYq25J1QdOiIj/gw3GWsqvA/CkP1/dgdTGmBAgDXAu1qNMAhb//COpp0ykUOB97rnDvr4d6fPKW7B3vjVVtmgja1A7Uz5Xh6qUcjFXLWnWCZgbYVtNIFBEjkXcWUTOAuOAf4HzwA0R+T2yjo0xPsaYHcaYHZcuXYrhsBOX2RM+p8job0l1z8amdrXJtmw+3VL9BZ/nhZVvQb7K0G6qJgulFOCCKwxjTAqgJTAswkedeTyJPGiTGWgFFAKuAwuNMS+JyKyI+4rIJGASgJeXl8Rc5ImHn98Wdn39MdW2+3MyZwpKTV9IveQ34I934NJhqPs+5K1k3Yb6bw13pVQS54pbUk0APxEJfLDBGOMOtAUqPqFNA+CUiFyy778EqAY8ljDUkwUH3+HnIT2ptnYfVYB/vPLT/vWXyLi8PVz3B7eU0PpHKNPe1aEqpeIhVySMyK4kGgCHRSTgCW3+BaoYY9IAwVhjIDtiL8TE5/adIJZ1bkzNI1fZ7pGDMu+Npk/wdlg1EJ4rB3WGQolmkCqjq0NVSsVTcZow7L/wGwIvR/josTENY0xuYIqINBURX2PMIsAPCAV2Yb/tpKLm73+CNaOHUszvEBVu2NjUvDL9ujWB7cMhYDuUaA7tpkDy1K4OVSkVzxmRxHub38vLS3bsSLoXIhvWryblG2+RIVjYVyg9oXVq0CXzLmuJ1MyFoOabUL6bjlMopR4yxuwUEa/IPtMnvROh5Qunc2PONAqfuUJYMjg7bgQdimWF5QPh2j1r5pNHO00USimnaMJIZOZNHkfJ8VO5m9xwMXNKsrWrQIP9Q2HHdUj/HPRaDTlKujpMpVQCpAkjkdi7dzu+C6ZRZcl6ArKloOQnb+J90w92zoDiTa11KgrWgBRpXB2qUiqB0oSRCEwf/S5ePy2nRhgcy5OK6i1Sk3Xd69aH1QZCw0/09pNS6plpwkjAbDYbU9/sRs01uziUPy3pe3blhcDppAg6CW3+B9lLWFNmNVkopWKAJowEatYPn5F1/nxqXrzP7pIZaVXlOmmOfgSps0DPFZA30kkOSikVbZowEpirVy6z+J3e1Nh8jICs7uxtU4oOaTbhljo31PrcevgucwFXh6mUSoQ0YSQQISEhzPpqOEUW/UqNW2H4lc9K2zppSH3+T8hbAzrMhLTZXB2mUioR04SRAMyb8hXZpk2nytVQTuVMgbQtSNd76+FuIWj8GVR+Gdz0R6mUil36WyYes9lszBz9LpVmryQwsztH2hahebrduN/zB+/+1uwn9xSuDlMplURowoiHbDYbc77/lOyLF1P1YgincrtTrcYlMiX7Fwo3t8qP5yzl6jCVUkmMJox4aOq7fam5YivnM7txomk2GqfbS3KP1lD7HchZ2tXhKaWSKE0Y8ciMse+R6u+1VD9xg6NF3GhW4QzuKS5BtXeg7nv6PIVSyqU0YcQDNpuNGT2bUW27P4EZk3GspBv1y17Cve774NVbZz8ppeIFTRgudPbcv6z64TNMgD/Vt/tz1NPQtFgAyZMZ6PATlGrp6hCVUuohTRgucuLkEY706kCNwPvW+6JhNK/khlv9iZCnAmQv7uIIlVLqUXGWMIwxxYH54TYVBkYAVYEHvx0zAddFxDOS9pmAKYAHIEBvEdkSexHHnt17tnPx1d7kuR7K1XpB5Eh7nxdyZcGt31+Q4TlXh6eUUpGKs4QhIkcATwBjjBtwFlgqIt882McY8yVw4wldjAd+E5H2xpgUQIKr0/3XmmUEjRlJsbPBZE8OofVvUL1+O0iRHip012ShlIrXXHVLqj5wQkT8H2wwxhigA1Av4s7GmAxALaAngIjcB+7HSaQxZM6E0Xj8MJO0KeFE5TBK5rrG860+gOqvuzo0pZRyiKsSRidgboRtNYFAETkWyf6FgUvAdGNMOWAnMEhEbkfc0RjjA/gA5M+fP0aDjo7rN66xYORgqvy2jYvZBM86t6hSrjmUbg3Fm7g6PKWUcpgRkbg9oHU76RxQWkQCw23/ETguIl9G0sYL2ApUFxFfY8x44KaIDI/qWF5eXrJjx46YPQEHhYSEMLNvK7x2niJlKJwqFIZ3w0xk7b0QMrk+kSmlVGSMMTtFJNL1EVxxhdEE8IuQLNyBtkDFJ7QJAAJExNf+fhEwNFajfAb37t1jdp8WVN9xhhPFbTxXMIimVWpDqx8gTRZXh6eUUtHiioTRmcdvRzUADotIQGQNROSCMeaMMaa4ffC8PnAwluN02q+LZ3J72gQyBN2lauB9TnqG0KRXZ9w82lhTZZVSKgGL04RhjEkDNARejvDRY2MaxpjcwBQRaWrfNBCYbb+ldRLoFcvhOuXQwT1k+2w0OcPgTmo4WyuYZv1HWrOflFIqEYjThCEid4CskWzvGcm2c0DTcO93A/Fu3dHNG//kwKJplN24i9Qh4N4lO5VLe0KlPtZ62koplUjok97PYNH0ryk+dhI1w8A/Xxg5qmfA463VkCKtq0NTSqkYpwkjGq5du8LisUPxXLmJK5mF/J2L8ULt7lCqta58p5RKtPS3m5NWLZlBmrFjqH5NOJtLyNOvBYW7jnV1WEopFes0YTjIZrOx4LsRlJyyhNtpILBDLur2/Bi3wrVcHZpSSsUJTRgOWDXvB1J+9wOeV4Rz2YXnPxxMwQb9XR2WUkrFKU0YUTh6yI+dHw+gzJ4bXE8PxxpnpWb/T8lcso6rQ1NKqTinCSMSNpuN5ePf4rnZa/AIhqMe7nh/8A01ytV3dWhKKeUymjAiOHv6EPt7taPEeeFiFrAN6U7bzsNcHZZSSrmcJowIcuUrhm/G5OytkJcm700iQ9Y8rg5JKaXiBU0YEbi5udF22R5Xh6GUUvFOMlcHoJRSKmHQhKGUUsohmjCUUko5RBOGUkoph2jCUEop5RBNGEoppRyiCUMppZRDNGEopZRyiBERV8cQa4wxlwD/aDbPBlyOwXDiu6R2vqDnnBQktfOFZz/nAiKSPbIPEnXCeBbGmB0iEu/WEI8tSe18Qc85KUhq5wuxe856S0oppZRDNGEopZRyiCaMJ5vk6gDiWFI7X9BzTgqS2vlCLJ6zjmEopZRyiF5hKKWUcogmDKWUUg7RhBGBMeYFY8wRY8xxY8xQV8cTU4wx+Ywx64wxh4wxB4wxg+zbsxhj/jDGHLP/mzlcm2H278MRY0xj10UffcYYN2PMLmPMCvv7xH6+mYwxi4wxh+0/66qJ+ZyNMW/Y/3veb4yZa4xJldjO1xgzzRhz0RizP9w2p8/RGFPRGLPP/tm3xhjjdDAiol/2L8ANOAEUBlIAe4BSro4rhs7tOaCC/XV64ChQChgDDLVvHwp8YX9dyn7+KYFC9u+Lm6vPIxrn/SYwB1hhf5/Yz3cm0Nf+OgWQKbGeM5AHOAWktr9fAPRMbOcL1AIqAPvDbXP6HIFtQFXAAKuBJs7GolcYj6oMHBeRkyJyH5gHtHJxTDFCRM6LiJ/99S3gENb/cK2wfslg/7e1/XUrYJ6I3BORU8BxrO9PgmGMyQs0A6aE25yYzzcD1i+XqQAicl9ErpOIzxlrmenUxhh3IA1wjkR2viKyAbgaYbNT52iMeQ7IICJbxMoeP4Vr4zBNGI/KA5wJ9z7Avi1RMcYUBMoDvkBOETkPVlIBcth3Swzfi2+Ad4CwcNsS8/kWBi4B0+234aYYY9KSSM9ZRM4C44B/gfPADRH5nUR6vhE4e4557K8jbneKJoxHRXZPL1HNOzbGpAMWA4NF5GZUu0ayLcF8L4wxzYGLIrLT0SaRbEsw52vnjnXr4kcRKQ/cxrpd8SQJ+pzt9+1bYd16yQ2kNca8FFWTSLYlmPN10JPOMUbOXRPGowKAfOHe58W6xE0UjDHJsZLFbBFZYt8caL9cxf7vRfv2hP69qA60NMacxrq1WM8YM4vEe75gnUOAiPja3y/CSiCJ9ZwbAKdE5JKIhABLgGok3vMNz9lzDLC/jrjdKZowHrUdKGqMKWSMSQF0Apa7OKYYYZ8RMRU4JCJfhftoOdDD/roH8Eu47Z2MMSmNMYWAoliDZgmCiAwTkbwiUhDr57hWRF4ikZ4vgIhcAM4YY4rbN9UHDpJ4z/lfoIoxJo39v+/6WGNzifV8w3PqHO23rW4ZY6rYv1fdw7VxnKtnAMS3L6Ap1gyiE8D7ro4nBs+rBtYl6F5gt/2rKZAV+As4Zv83S7g279u/D0eIxoyK+PIF1OG/WVKJ+nwBT2CH/ee8DMicmM8Z+Bg4DOwHfsaaHZSozheYizVGE4J1pdAnOucIeNm/TyeA77FX+nDmS0uDKKWUcojeklJKKeUQTRhKKaUcoglDKaWUQzRhKKWUcogmDKWUUg7RhKHUUxhjshpjdtu/LhhjztpfBxljJsTSMQcbY7o/ZZ95xpiisXF8pSKj02qVcoIx5iMgSETGxeIx3AE/rOrCoVHsVxt4SUT6xVYsSoWnVxhKRZMxpk64dTY+MsbMNMb8bow5bYxpa4wZY19/4Dd7WZYHaxL8bYzZaYxZ86C8QwT1AD8RCTXGPG+M8Qt3zKLGmAf1sTYCDewJRqlYpwlDqZjzPFY59VbALGCdiJQBgoFm9qTxHdBeRCoC04BRkfRTHdgJICIngBvGGE/7Z72AGfbPwrDKV5eLpfNR6hH6l4lSMWe1iIQYY/ZhLcb1m337PqAgUBzwAP6wL3bmhlXyIaLnsGoiPTAF6GWMeRPoyKNrOFzEqtTqaFVepaJNE4ZSMeceWH/5G2NC5L8BwjCs/9cMcEBEqj6ln2AgVbj3i4EPgbXAThG5Eu6zVPb9lYp1ektKqbhzBMhujKkKVrl5Y0zpSPY7BBR58EZE7gJrgB+B6RH2LQYciJ1wlXqUJgyl4ohYy/62B74wxuzBqhhcLZJdV2MttRrebKxqw78/2GCMyQkEi33lNaVim06rVSoeMsYsBd4RkWP290OAjCIyPNw+bwA3RWSqi8JUSYyOYSgVPw3FGvw+Zk8ez2NNtw3vOtYaEErFCb3CUEop5RAdw1BKKeUQTRhKKaUcoglDKaWUQzRhKKWUcogmDKWUUg75P1l3R3nKy8LSAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "\n", - "ax.plot(t, varpi, label=\"JPL Horizons\")\n", - "ax.plot(tsim, varpinogrsim, label=\"Swifter no GR\")\n", - "ax.plot(tsim, varpigrsim, label=\"Swifter GR\")\n", - "ax.plot(tsim, varpiswiftest, label=\"Swiftest GR\")\n", - "ax.set_xlabel('Time (y)')\n", - "ax.set_ylabel('Mercury $\\\\varpi$ (deg)')\n", - "ax.legend()\n", - "print('Mean precession rate for Mercury long. peri. (arcsec/100 y)')\n", - "print(f'JPL Horizons : {np.mean(dvarpi)}')\n", - "print(f'Swifter no GR : {np.mean(dvarpinogrsim)}')\n", - "print(f'Swifter GR : {np.mean(dvarpigrsim)}')\n", - "print(f'Swiftest GR : {np.mean(dvarpiswiftest)}')\n", - "print(f'GR - no GR : {np.mean(dvarpigrsim) - np.mean(dvarpinogrsim)}')\n", - "print(f'Obs - Swifter : {np.mean(dvarpigrsim) - np.mean(dvarpi)}')\n", - "print(f'Obs - Swiftest: {np.mean(dvarpiswiftest) - np.mean(dvarpi)}')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_gr_test/swifttest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_gr_test/swifttest_rmvs_vs_swifter_rmvs.ipynb deleted file mode 100644 index 4dbc0754d..000000000 --- a/examples/rmvs_gr_test/swifttest_rmvs_vs_swifter_rmvs.ipynb +++ /dev/null @@ -1,156 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import swiftestio as swio\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swifter file param.swifter.in\n" - ] - } - ], - "source": [ - "inparfile = 'param.swifter.in'\n", - "paramgr = swio.read_swifter_param(inparfile)\n", - "swifterdat = swio.swifter2xr(paramgr)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swiftest file param.swiftest.in\n" - ] - } - ], - "source": [ - "param_file_name = 'param.swiftest.in'\n", - "config = swio.read_swiftest_config(param_file_name)\n", - "swiftestdat = swio.swiftest2xr(config)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "swiftdiff = swiftestdat - swifterdat" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "swiftdiff = swiftdiff.rename({'time' : 'time (y)'})\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "swiftdiff['a'].plot.line(x=\"time (y)\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_gr_test/test_unit_change.ipynb b/examples/rmvs_gr_test/test_unit_change.ipynb deleted file mode 100644 index 272e8dda0..000000000 --- a/examples/rmvs_gr_test/test_unit_change.ipynb +++ /dev/null @@ -1,169 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import sys\n", - "from astroquery.jplhorizons import Horizons\n", - "import astropy.constants as const \n", - "import swiftestio as swio" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.01746575523103058" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#Values from JPL Horizons\n", - "AU2M = const.au.value\n", - "GMSunSI = const.GM_sun.value\n", - "Rsun = const.R_sun.value\n", - "GC = const.G.value\n", - "JD = 86400\n", - "year = 365.25 * JD\n", - "c = 299792458.0\n", - "\n", - "MU2KG = GMSunSI / GC #Conversion from mass unit (G * Msun) to kg\n", - "DU2M = AU2M #Conversion from distance unit (AU) to meters\n", - "TU2S = year #Conversion from time unit (Julian Day) to seconds\n", - "GU = GC / (DU2M**3 / (MU2KG * TU2S**2))\n", - "\n", - "GMSun = GMSunSI / (DU2M**3 / TU2S**2)\n", - "\n", - "# Solar oblateness values: From Mecheri et al. (2004), using Corbard (b) 2002 values (Table II)\n", - "J2 = 2.198e-7 * (Rsun / DU2M)**2\n", - "J4 = -4.805e-9 * (Rsun / DU2M)**4\n", - "\n", - "npl = 10\n", - "\n", - "tstart = '2021-01-28'\n", - "tend = '2021-01-29'\n", - "tstep = '1d'\n", - "planetid = {\n", - " 'mercury' : '1',\n", - " 'venus' : '2',\n", - " 'earthmoon' : '3',\n", - " 'mars' : '4',\n", - " 'jupiter' : '5',\n", - " 'saturn' : '6',\n", - " 'uranus' : '7',\n", - " 'neptune' : '8',\n", - " 'plutocharon' : '9'\n", - "}\n", - "\n", - "#Planet Msun/M ratio\n", - "MSun_over_Mpl = {\n", - " 'mercury' : 6023600.0,\n", - " 'venus' : 408523.71,\n", - " 'earthmoon' : 328900.56,\n", - " 'mars' : 3098708.,\n", - " 'jupiter' : 1047.3486,\n", - " 'saturn' : 3497.898,\n", - " 'uranus' : 22902.98,\n", - " 'neptune' : 19412.24,\n", - " 'plutocharon' : 1.35e8\n", - "}\n", - "\n", - "#Planet radii in meters\n", - "Rpl = {\n", - " 'mercury' : 2439.4e3,\n", - " 'venus' : 6051.8e3,\n", - " 'earthmoon' : 6371.0084e3, # Earth only for radius\n", - " 'mars' : 3389.50e3,\n", - " 'jupiter' : 69911e3,\n", - " 'saturn' : 58232.0e3,\n", - " 'uranus' : 25362.e3,\n", - " 'neptune' : 24622.e3,\n", - " 'plutocharon' : 1188.3e3\n", - "}\n", - "\n", - "pdata = {}\n", - "plvec = {}\n", - "Rhill = {}\n", - "\n", - "for key,val in planetid.items():\n", - " pdata[key] = Horizons(id=val, id_type='majorbody',location='@sun',\n", - " epochs={'start': tstart, 'stop': tend,\n", - " 'step': tstep})\n", - " plvec[key] = np.array([pdata[key].vectors()['x'][0],\n", - " pdata[key].vectors()['y'][0], \n", - " pdata[key].vectors()['z'][0], \n", - " pdata[key].vectors()['vx'][0], \n", - " pdata[key].vectors()['vy'][0], \n", - " pdata[key].vectors()['vz'][0] \n", - " ])\n", - " Rhill[key] = pdata[key].elements()['a'][0] * (3 * MSun_over_Mpl[key])**(-1.0 / 3.0)\n", - "ver = np.sqrt(plvec['earthmoon'][3]**2 + plvec['earthmoon'][4]**2 + plvec['earthmoon'][5]**2)\n", - "ver" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.37936709813392" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "for plid in plvec:\n", - " plvec[plid][3:] *= year / JD\n", - "ver = np.sqrt(plvec['earthmoon'][3]**2 + plvec['earthmoon'][4]**2 + plvec['earthmoon'][5]**2)\n", - "ver" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_gr_test/tp.swifter.in b/examples/rmvs_gr_test/tp.swifter.in deleted file mode 100644 index 3e12e22a6..000000000 --- a/examples/rmvs_gr_test/tp.swifter.in +++ /dev/null @@ -1,31 +0,0 @@ -10 -100 -0.3089139948287037 -0.277270436883302 -0.052337497440874486 -4.590828296619012 9.736244632162235 0.28280742360614397 -101 -0.3070354816876597 -0.2845400603406744 -0.05318033091888456 -4.545139601540877 9.883525912822861 0.28793674166112104 -102 -0.31066213352368505 -0.28113935471688967 -0.053108274441649984 -4.617453752609237 9.800810875613966 0.28446343275638736 -103 -0.3088067674199909 -0.2869523372878359 -0.05191462227061065 -4.6363938524337565 9.713660761176554 0.2789015757022737 -104 -0.307074553418099 -0.28073329893098137 -0.0534617731635447 -4.579194784145406 9.574048169595772 0.2861631995442269 -105 -0.30294954170866395 -0.281481925092296 -0.052234290208198066 -4.604562331430815 9.719598701455027 0.282459654106244 -106 -0.30692242784366397 -0.2878888119399549 -0.05247924519789774 -4.633660571617613 9.88377173149324 0.28490916253088794 -107 -0.30868976460301095 -0.27766108923594196 -0.05385210649760836 -4.581218660618022 9.756537560396604 0.2826382827782646 -108 -0.30635827269855037 -0.2829786891311232 -0.05244294704858842 -4.599148326746042 9.647983245028241 0.28233738073637155 -109 -0.313848717338811 -0.28389321799892847 -0.05290541615450685 -4.556080023696361 9.729321212583539 0.29047556209904657 diff --git a/examples/rmvs_gr_test/tp.swiftest.in b/examples/rmvs_gr_test/tp.swiftest.in deleted file mode 100644 index d91e0934e9e7fba5abf257b349a5dacf461cba4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmd;JU|`?^Vi4c}Vhtcp0pe63P6Og}AkF~dOd!qz;%p$!0peUB2B{4IVpmHS6Z@l= z?T_40R;yTc*}iuF)7-}oFWc|x*;ZP6__F=N5OH>y<(KW-TI(v?k}unbT&w>+cgbb@ znKDneO*(klJ}|m%SN!bD_D9vs-${sFu?Lw6!e;LlH=NmbasPkKl;-EAm-a_!b-dR9 zcX5Ap99LLw?4|wB7Z#uC_ix30`+qYUuHNtFx@KkXlvVp}*DcKp zk6*n%RV4C5@xE32RsXGb?!UKczvh;b8x50I@7Hht>T~wys{MzuLJYFSR>RFbB6m)l zDOSj#x;9bRQcuW1@&Aj{t`$NKfdO?_R&@(Ggsu6XFA*r@VASWHER-$ez*H;4%YsYmD^K=95O$w\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.DataArray 'time' ()>\n",
    -       "array(14610.)\n",
    -       "Coordinates:\n",
    -       "    id       int64 100\n",
    -       "    time     float64 1.461e+04
    " - ], - "text/plain": [ - "\n", - "array(14610.)\n", - "Coordinates:\n", - " id int64 100\n", - " time float64 1.461e+04" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swifterdat.isel(time=-1).sel(id=100)['time']" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "px = swifterdat.isel(time=-1).sel(id=100)['px'].values.item()\n", - "py = swifterdat.isel(time=-1).sel(id=100)['py'].values.item()\n", - "pz = swifterdat.isel(time=-1).sel(id=100)['pz'].values.item()\n", - "\n", - "vx = swifterdat.isel(time=-1).sel(id=100)['vx'].values.item()\n", - "vy = swifterdat.isel(time=-1).sel(id=100)['vy'].values.item()\n", - "vz = swifterdat.isel(time=-1).sel(id=100)['vz'].values.item()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'tpfile' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m-------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mpfile\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"../tp\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'w'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtpfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtpfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'{px} {py} {pz}'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtpfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'{vx} {vy} {vz}'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtpfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'tpfile' is not defined" - ] - } - ], - "source": [ - "pfile = open(\"../tp\", 'w')\n", - "print(1,file=tpfile)\n", - "print(100,file=tpfile)\n", - "print(f'{px} {py} {pz}', file=tpfile)\n", - "print(f'{vx} {vy} {vz}', file=tpfile)\n", - "tpfile.close()" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from numpy.random import default_rng" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "nclones = 10\n", - "xv_dispersion_factor = 0.01 \n", - "rng = default_rng()\n", - "clone_xv = (rng.standard_normal((nclones, 6)) - 0.5) * xv_dispersion_factor + 1.0" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "px = 1.0\n", - "py = 2.0\n", - "pz = 3.0\n", - "vx = 4.0\n", - "vy = 5.0\n", - "vz = 6.0\n", - "jangofett = np.array([px, py, pz, -vx, -vy, -vz])" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 1., 2., 3., -4., -5., -6.])" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "jangofett" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "clones = jangofett * clone_xv" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(10, 6)" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clones.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [], - "source": [ - "clonenames = range(100, 100 + nclones)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "clonedat = dict(zip(clonenames,clones))" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{100: array([ 1.00930105, 1.9948283 , 2.99208025, -4.05525929, -5.09831281,\n", - " -5.92580054]),\n", - " 101: array([ 0.99941117, 1.97090351, 3.03529928, -3.97161239, -4.96155703,\n", - " -5.94367707]),\n", - " 102: array([ 0.98148793, 1.99203431, 2.9652801 , -4.04205948, -4.96976478,\n", - " -5.90277054]),\n", - " 103: array([ 0.98976919, 2.00294464, 2.97587626, -4.01195673, -5.04441437,\n", - " -5.96164778]),\n", - " 104: array([ 0.99530072, 1.99825316, 3.00016025, -3.95468703, -4.94515931,\n", - " -5.96765703]),\n", - " 105: array([ 1.00614369, 1.98935313, 2.95064276, -4.01105523, -5.00312835,\n", - " -6.06301916]),\n", - " 106: array([ 0.98931165, 1.98780538, 2.95666409, -3.98514127, -4.89578071,\n", - " -5.98396813]),\n", - " 107: array([ 0.99959316, 2.00748056, 3.04892677, -3.97927546, -4.89214677,\n", - " -5.97922326]),\n", - " 108: array([ 0.99488235, 1.99323474, 3.00338001, -3.97767383, -5.04020251,\n", - " -5.9724389 ]),\n", - " 109: array([ 0.99568866, 1.97598485, 3.00296884, -4.0810708 , -4.92477352,\n", - " -5.87353764])}" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clonedat" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "ename": "KeyError", - "evalue": "101", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mclones\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m101\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m: 101" - ] - } - ], - "source": [ - "clones[101]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_swifter_comparison/1pl_1tp_encounter/check_init_cond.ipynb b/examples/rmvs_swifter_comparison/1pl_1tp_encounter/check_init_cond.ipynb deleted file mode 100644 index 33b054177..000000000 --- a/examples/rmvs_swifter_comparison/1pl_1tp_encounter/check_init_cond.ipynb +++ /dev/null @@ -1,930 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import swiftest\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swifter file param.swifter.in\n", - "Reading in time 1.355e-01\n", - "Creating Dataset\n", - "Successfully converted 397 output frames.\n", - "Swifter simulation data stored as xarray DataSet .ds\n" - ] - } - ], - "source": [ - "swiftersim = swiftest.Simulation(param_file=\"param.swifter.in\", codename=\"Swifter\")\n", - "swiftersim.bin2xr()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAoe0lEQVR4nO3dfZyVdZ3/8ddnBhAN0hEHRGEAUwSMvGEC0hRLMSSTzHKBdsm7iF/ZRu7m8ljbWn+brf5+tYu766aklu5mZOXdehNW3oCQwgyiqNxIyMiAcTsKmMDcfPaP68zMubnOzJmZc52bOe/n4zEP57rOdc585jSdN9/by9wdEREpXWX5LkBERPJLQSAiUuIUBCIiJU5BICJS4hQEIiIlrk++C+iq4447zkeOHJnvMkREikptbe1ud68Me6zogmDkyJHU1NTkuwwRkaJiZnXpHlPXkIhIiVMQiIiUOAWBiEiJK7oxAhGRbGhsbKS+vp6DBw/mu5Ss6t+/P8OGDaNv374ZP0dBICIlqb6+noEDBzJy5EjMLN/lZIW7s2fPHurr6xk1alTGz1PXkIiUpIMHDzJo0KBeEwIAZsagQYO63MopmSCorWvg9mc2UVvXkO9SRKRA9KYQaNWd36kkuoZq6xr44l0vcLipheryTcysrIOjBjG+7E0ONrXQ96zZjPnohfkuU0QkL0oiCF7YvIfDTS2cwUbuLf8+/fY2Ura3/T4MjdsfZvUzkxkw6EReGXQxo878BBNGVOSxYhEpdmeffTYrVqxIOX/llVdyySWX8PnPfz4PVYUriSCYfNIg+vUpY3LLOvrSRLk57tDagurrzZz53nJ4D0a+9WueqT2T1ccP551jxnHqBw9z4hkXwfCJ+f0lRKSohIVAoSqJIJgwooKfXTuZVcveofGNh8AbKScIg1bxoXBRWQ3srIGdD9ECNNX+CxtGzaHl4D6O/+ARVH78KgWDiHRowIABHDhwAHfn61//Ok8//TSjRo2iEO8KWRJBAEEYTBgxi/WrKqmrfYr3yo9m5OE32PWnrXyi7CX6enPbta2h4A7lBu7NjNv8k+Dkdmja8Av2VV3AsYNPhNNnKxREJK2HHnqIDRs2sHbtWnbs2MG4ceO4+uqr811WgpIJglZjPnphwsBwbV0D9yz7DWfs/Q0VLXsZ1bA8IRRau5Diu5LKvZmKuqfwt6C55j7eHjyFd8orGDhqAiOPPAgjz1U4iAgAS5cuZdasWZSXl3PCCSfwyU9+Mt8lpSi5IEjW2lKAWQCsX/U7GlffT2NTCy++3cS15U9g3kw5hHYllXszw3Y8zTCA7b+mxQAr581jz6Vx8tc1G0lECn6aaskHQbIxH70QYh/eXtfA3cs+zagDL9F8RAUNm1cxyN/lk+Xpu5LKAG9p5qTdz9L42DJWPzOZ4cNHUHnKJHh/j1oLIiXmvPPO484772TOnDns3LmTZ555htmzZ+e7rAQKgg4ktxZq6xp4cHU9a3atZvjWR0JDIXQ20vrl+Ib7ccApY1/VBVRMvUGBIFICLrvsMp5++mnGjx/P6NGjmTJlSr5LSmGFOILdkerqai+EG9O0hsKw915l0rtLWPf2Pt71I5nb5wnKaWm7Lr610DrWANBs5awfeA5DThim1oJIHqxbt46xY8fmu4xIhP1uZlbr7tVh16tF0E1Ba6ECGA/MwmPB8OP3LmHSu0tCZyMlDziftm8p7EOtBRHJKwVBliQHQ+tspDE7HmPbO+/zbkusteDhrYUyA/cWjqn7LU13P03doHP54HEnqLUgIpGLNAjMbBpwG1AO3OXutyQ9/i3gi3G1jAUq3X1vlHXlQvz4Qms30g92XcTk/U9x6J0/ddpaOGn3s7C7tbVgQBnvVn1SrQURybrIxgjMrBzYCEwF6oFVwCx3fz3N9Z8BvunuHU6yLZQxgp6orWvgt0seZfhbj+DAvi6OLeyruoBjj+oHAyq1oE2kmzRG0C7KFsFEYJO7b44VsRiYAYQGAcHUnJ9HWE/BmDCigglzv0Rt3aW8sHkPFUf14wcvX8Twtx5hEB3PRGpbzBY7bq65T6ucRaRHogyCE4Gtccf1wKSwC83sKGAacF2ax+cCcwGqqqqyW2UetY8rAJPag2HnztWUv7oY97jWQsjYAiSucm6puY+d47/M0CMOA65gEJGMRBkEYUvp0vVDfQZYnm5swN0XAYsg6BrKTnmFpz0YTqZ28lQeXF2PA/cfnkH5q4tD1y1AezCUeTPHv3JHW2vBa/+LslOnqQtJpEBt3bqVOXPm8Kc//YmysjLmzp3LN77xjZzXEWUQ1APD446HAdvTXDuTEukWylRCa4Hx1E6eyp3P/ZG71i/js2XLOI53ARKCoW1PpNYXaWnC1z8GgNfcR9k5X4f+H9QMJJEC0adPH374wx9y1llnsX//fiZMmMDUqVMZN25cbuuI8LVXAaeY2ShgG8GHfcq6ajM7GpgC/GWEtRS9CSMqWDSnmtq6D/HC5s9QdlQ/nt2wk7vWL+Passe4sHw1eEvqnkit33gzvnwhDpiVY1WToXK0WgoieTR06FCGDh0KwMCBAxk7dizbtm3rPUHg7k1mdh2whGD66D3u/pqZzYs9fkfs0suAp9z9vahq6U3iWwqzJ1W1BcPOnavZsfZ37GkZwIfLtnBc0qBza2uhzIK9kLxuOdQtV/eRSBfU1jXwwuY9TD5pUNbvYrhlyxZeeuklJk0KHUqNlLaY6EVa1yvs2n8IgIaNz3MN/xO0FghaC5A42OxOW7PBKQ+6jw7tQ4PN0tt1dfpo/L3P+/Up42fXTs5aGBw4cIApU6Zw44038rnPfa7Hr1dI00clxxLHFaC27kPc+dzHuWv9MibaOgbwXsoMJEjtPmo71LiCSJvWe5+3ODQ2tfDC5j1ZCYLGxkYuv/xyvvjFL2YlBLpDQdCLJY4r7GHf+43MXP5RPmtLOx5sbk2GtmAwzMrg1GlwznwFgpSk1nufNza10LdPGZNPGtTj13R3rrnmGsaOHcv111+fhSq7R11DJSbT7iNIDIbWvxJ1H0lv0Z2VxdkeI3j++ec599xzGT9+PGVlZQB8//vfZ/r06T163a52DSkISlxtXQN3PvdH9qxfxiRbx14fwPllL6cdV4gfUwjOl8PZ6j6S4qMtJtqpa6jExXcfPbi6njJgzRF9uGv5Eibyesq4QnL3kXszqPtIpKgpCAQIGWg+7XjufO6P/H7dDn53uJq55eFrFdqDwYNQWP84tuE3QStB3UciRUFBIKHaWwoNvLD5VNa8P62tlZDQfRQXDKmthIDV3AtjLlZLQaRAKQikQ/EthdrTjufB1fVs3rGfX9ZdwOnNG5lcljotNaX7iJagpbDxKRj9KS1eEykwCgLJWEIoxFoK+9+fxg+ff7PT7iMAb2mE2N5HVnMvjPiYtrkQKQAKAumW+FCYetrx3PncYL62bnRbK6G9+6iW8riZaQmthNg2F7b6v9VSEMmjsnwXIMWvdTzhgXlnc8FFn2HYpd9m75jZfLX5eq44/F1+1nwBS5qraaQc9/YdUlu/vKUx2CW15idw96dg8WzYujLPv5VI9K6++moGDx7Mhz/84bZze/fuZerUqZxyyilMnTqVhoaGtsf++Z//mZNPPplTTz2VJUuWZK0OrSOQyLSuUfj9uh20OJxpG2PdR7WUJ92aor2lEDsu66tWgkSqENYRLF26lAEDBjBnzhxeffVVAG644QaOPfZYFixYwC233EJDQwO33norr7/+OrNmzWLlypVs376dCy+8kI0bN1JeXp7yulpHIAUjcebRHva/fxJfe/5UTm/ewOfK099TAdrHEwxA4wnSS5133nls2bIl4dwjjzzCs88+C8CXvvQlzj//fG699VYeeeQRZs6cyRFHHMGoUaM4+eSTWblyJR/72Md6XIeCQCKXPJ7w4OrhPLpjEjV1DbQ4nNUc11LQeIIUsq0rYcuySFfR79ixo+0eBUOHDmXnzp0AbNu2jcmTJ7ddN2zYMLZt25aVn6kgkJxKnnkU7Hs0hOs2nMpHDre3FMJaCRDSUtD6BMmVrSvh3kuh+TCU94MvPZrTv7uwbnyL/z9HDygIJG+SQ+HO5wbznXWjO2wlQGJLwdY/DuufVCBI9LYsC0LAm4P/blkWyd/bkCFDePvttxk6dChvv/02gwcPBoIWwNatW9uuq6+v54QTTsjKz9SsISkIreMJv5x3NheNG8IaRjOvKXHWUdjMI2hfsMZPpsPiLwZfj83XzCPJrpHnBi0BKw/+O/LcSH7MpZdeyr333gvAvffey4wZM9rOL168mEOHDvHmm2/yxhtvMHFidoIo0haBmU0DbiO4VeVd7n5LyDXnAwuBvsBud58SZU1S2OIHmB9cXY9TRf0R0/ju82/S3OKhLYXQBWugriPJruETg+6gLI4RzJo1i2effZbdu3czbNgwbrrpJhYsWMAVV1zB3XffTVVVFb/85S8BOO2007jiiisYN24cffr04fbbbw+dMdQdkU0fNbNyYCMwFagnuJn9LHd/Pe6aY4AVwDR3f8vMBrv7zo5eV9NHS1PrVNTfxaainpVmKmrCeAKxQNBW2RKiEKaPRqWQpo9OBDa5++ZYEYuBGcDrcdfMBh5097cAOgsBKV3xLYUgEGBe0/Wc1bwxdIAZEjfBs9hW2WirbJEUUQbBicDWuON6YFLSNaOBvmb2LDAQuM3d70t+ITObC8wFqKqqiqRYKQ7JXUe79g/hHzecSlOzt4XCyWyjunxDQtdR0DoItsrWALNIoiiDIGxeU3I/VB9gAnABcCTwBzN7wd03JjzJfRGwCIKuoQhqlSITNg31jR0VfKcuedZR3CZ4dDDj6OSL4P096joqMe6etSmYhaI73f1RBkE9MDzueBiwPeSa3e7+HvCemS0FTicYWxDJSOo01MSuo3RbZUPcFtnrH0ddR6Wlf//+7Nmzh0GDBvWaMHB39uzZQ//+/bv0vCgHi/sQfKBfAGwjGCye7e6vxV0zFvgP4FNAP2AlMNPdX033uhoslkwk73PkhA8wx+9xlPhRUKauo16usbGR+vp6Dh48mO9Ssqp///4MGzaMvn37JpzP283rzWw6wdTQcuAed7/ZzOYBuPsdsWu+BVwFtBBMMV3Y0WsqCKQr2vc5auTHrVNQM9j8rp0CQXqHvAVBFBQE0l1hU1A/V74MgH1+ZNB1RGLXUTsFghQ3BYFInPbB5f1tG99Bhl1H2h5bipSCQCSN5FYCdGUsoUzbY0vRUBCIdCLTQIAOQkFdR1LAFAQiGWpfqHaIpzfsDBaqWdLqZVK3x26nQJDCpCAQ6YbutBLaKRCksCgIRHogXSAkbGeRNJbQToEghUFBIJIF3Zlt1EY7oEqeKQhEsqyrs43aaRsLyQ8FgUhEuhII2sZC8klBIBKxjgNhNRDsgIqFbcur9QgSPQWBSI6kC4SEHVBpSRMIoFaCREVBIJJjYYEAId1GCgTJEQWBSJ50JRAgTbeRAkGyQEEgkmcdBULKeoR04wgKBOkBBYFIgUgXCJBpt5ECQbpHQSBSYBQIkmsKApEClW61MigQJLvyeavKacBtBLeqvMvdb0l6/HzgEeDN2KkH3f3/dvSaCgLprXo200iBIB3LSxCYWTnBzeunAvUEN6+f5e6vx11zPvC37n5Jpq+rIJDeToEgUegoCMoi/LkTgU3uvtndDwOLgRkR/jyRXmHCiAoWzanml/PO5qJxQyiLfdqv9tHMa7qeKw5/lyXN1TS74Q6J/5RrgfWPw92fgpqf5r54KUpRBsGJwNa44/rYuWQfM7OXzexJMzstwnpEikqXAoGQQHhsPiyeDVtX5rx2KS5RBkHYgsnkfqjVwAh3Px34d+Dh0Bcym2tmNWZWs2vXruxWKVLgkgOhVUIgNFXTktI68PbWgQJBOhBlENQDw+OOhwHb4y9w933ufiD2/RNAXzM7LvmF3H2Ru1e7e3VlZWWEJYsUrtZA+P5l49taB9AeCDc2XtN5d5ECQUJEGQSrgFPMbJSZ9QNmAo/GX2Bmx5sFO7ab2cRYPXsirEmk6M2eVJXSXQSwuOWCzMcPFAgSJ+rpo9OBhQTTR+9x95vNbB6Au99hZtcB/wdoAt4Hrnf3FR29pmYNibTTDCPJlBaUifRyGQWCxW6Sk/JsBUIpUBCIlIgeB8Il/wrVV+aoWsklBYFIiamta+DWJ9excktDwvnOA8FgzHS1DnohBYFIibrliXXcuWwzyf83bw2EqeU1lGn8oCQoCERKWEc7nc4s+z3f63uPxg9KgIJARHo4fmBwzjdg6k25KleyTEEgIm26P34AjDgbLrxJrYMipCAQkRSdjR+0BoK6i3oHBYGIhOrsTmk39FnMpPL1gMYPip2CQEQ61BoIT72+I+WxG8rv5yt9HqdM6w+KWr7uRyAiRSLdhnYA/695Nl+I7XDauuV1Im15XezUIhCRBJ11F80tf4yL+tRgqLuomKhrSES6rKPuovj1B2E3HlF3UeFR15CIdFlH3UVtW143VdOEuouKnVoEItKpTruL+jzGReXpuou0GK0QqGtIRLIi3WI0yKC7SIvR8kpdQyKSFRNGVPDAvLOZd95JWAfdRc1h3UV1K3R3tAKlFoGIdEtHg8nxi9E0mFwY1CIQkazraDB5tY9mZuN3+FHjJeGtAw0mF5RIg8DMppnZBjPbZGYLOrjuo2bWbGafj7IeEcm+2ZOq+OW8s7lo3JDwxWiHgu6ilpRnOqx/POguqvlpboqVUJF1DZlZObARmArUA6uAWe7+esh1vwUOEtzg/lcdva66hkQKV2eDyTf3u4fykPaB7owWvXx1DU0ENrn7Znc/DCwGZoRc93Xg18DOCGsRkRzobDD5C4e+y+qjzgmJgtbWwUXw2+/mqFppFWUQnAhsjTuuj51rY2YnApcBd3T0QmY218xqzKxm165dWS9URLJrwfSx/Gre2UwcWZFwfrWP5nN7v8bfN15DS+jHj8PyhfCTizV2kENRBkHYZIHkfwgsBP7O3Zs7eiF3X+Tu1e5eXVlZma36RCRCCa2DpMd+3nwBnz/0HTYcM4XQj6G6FfCT6QqDHIkyCOqB4XHHw4DtSddUA4vNbAvweeA/zeyzEdYkIjm2YPpYbr5sfEpX0Wofzaf+9BVuPPYH7BsSMi7Q0giPXqcwyIGMgsDMfm1mnzazrgTHKuAUMxtlZv2AmcCj8Re4+yh3H+nuI4FfAV9194e78DNEpAjMnlTFzZ9NnWYK8LPtx3N63XxWHP9XqQ/u2qBxgxzI9IP9R8Bs4A0zu8XMxnT2BHdvAq4DlgDrgAfc/TUzm2dm87pdsYgUpdZppsnjBhD0Gc/ecjF3DPxrWlI6kjRuELUuTR81s6OBWcCNBAPBPwb+290boykvlaaPihS/dPdLBphV/ntu7vdTykKHDrWBXXdlZfqomQ0CrgKuBV4CbgPOIlgDICKSsXSziiA2kHzwH6gbcEbIM9U6iEKmYwQPAsuAI4FL3P1Sd/+Fu38dGBBlgSLSO8XPKkq22kczZfcNPHTUF0K6imjfwE4rkrMi0xbBXcA9BIvEbjezb5pZf4B0TQ0RkUwsmD42dL8igG/uvYzPH/pumtZBCzz2DQ0kZ0GmQXAlMAb4N+A/gLHAf0VUk4iUmI4GkltbB6GzikBdRVmQaRCc6u7Xuvszsa+5wOgoCxOR0tLR9hQQzCp6YsQCCJvFrq6iHsk0CF4ys8mtB2Y2CVgeTUkiUso6Gkj+6oaPsLDq34O7naVQV1F3ZRoEk4AVZrYltgr4D8AUM1trZq9EVp2IlKSOBpIXbqjgC4f+gbfHp1mOtHyhwqCL+mR43bRIqxARCbFg+lgA7li6OeH8qi0NnFN3Hj8/azCTXv8eeNLdDpYvDP6r9QYZyahF4O51HX1FXaSIlK4F08fy2TNOSDnf4vAXtWO4b8yd4V1FGkTOmG5VKSIFb+HMM0O7iQC+89IH0ncVaRA5IwoCESkKHa03WLWlgXNqzuO1UVeFPFODyJ1REIhI0ehovUGLwyXrpqYJA9RV1AEFgYgUlY5mFDlBGLx42ne03qALFAQiUpRau4pCNq1m5uoxPDXp3g7WG8xXGMRREIhI0Zo9qYqbQ8YN3OErz5Zz/7g74Zz5Ic90hUEcBYGIFLXWcYOTByduhOzA3z+0llsaZ8Ilt5F6G3WFQSsFgYgUvQkjKrj18o+Ezii6Y+lm5m86HS5ZGDJuoDCAiIPAzKaZ2QYz22RmC0Ien2Fmr5jZGjOrMbOPR1mPiPReE0ZU8L0090V+eM32IAyuXgKVpyY9qjCILAjMrBy4HbgYGAfMMrNxSZf9Hjjd3c8Aria474GISLd0NL304TXb+cLjTayf+H1SP/q8pNcaRNkimAhscvfN7n4YWAzMiL/A3Q94+02TP0DQrSci0m2t00vDtqVYtaWBSx4+zJazv0fqmAHBWoNffznyGgtNlEFwIsEN7lvVx84lMLPLzGw98DhBqyCFmc2NdR3V7Nq1K5JiRaR3WTjzzNAwaGp2bth8ZpoxA2DtAyUXBlEGQUjcpv6L390fcvcxwGeBfwp7IXdf5O7V7l5dWVmZ3SpFpNdKt0fRyi0N7WMGYWsN1j5QUquQowyCemB43PEwYHu6i919KfAhMzsuwppEpMS0LjxL9vCa7cxf3heuehLGX5H6xLoV8JPpJREGUQbBKuAUMxtlZv2AmcCj8ReY2clmwU3pzOwsoB+wJ8KaRKQEzZ5UFdoyeHjNduYvfgku/3F4GLQ0wu96/wByZEHg7k3AdcASYB3wgLu/ZmbzzKx1v9jLgVfNbA3BDKO/iBs8FhHJmnT3NUgIg7BVyHUrev2YgRXb5251dbXX1NTkuwwRKVLzF7/Ew2tSe6nnnXdScEe0mp8GU0mTjb8iCIsiZWa17l4d9phWFotISUk3m+iOpZu5/8W3oPrK8JZBL55NlOk9i0VEeo2FM88ESGkZ3PjQWgBmT70J9m0PPvzjtR4XccsgjFoEIlKSFs48k48mrUB2gjC4/8W30g8gr32g161AVhCISMlacPHY1C2sySAMli/sVXsTKQhEpGS1blQXdnObTsOgF21UpyAQkZLWenObsDD49sNrqa1rCMIgZQVy79m1VEEgIiUvXRi0ONz65Lrg4MKbCN+1dH7Rh4GCQESE9GGwcktDsOBs+ES45F/pjXc60/RREZGY2ZOqgOAWl/Fap5kunHllcOKx+STuoenw+DdhyLggMIqMWgQiInE63Zeo+spgC+vkloG3wPLbclFi1ikIRESSdLQv0S1PrIsLgyTrHyvKLiIFgYhIiHRbUdy5dHMwk6j6Shjz6dQnFuF4gYJARCSNhTPPZOzxAxPOOXEzic6ZT2+YSaQgEBHpwPd6MpOoSG5qoyAQEenAhBEV3JzmDmeJ4wUhYVAkN7VREIiIdCLdTKKEravDBo/rVhRFF5GCQEQkAwumj00ZL4C4bSjS3cegCLqIIg0CM5tmZhvMbJOZLQh5/Itm9krsa4WZnR5lPSIiPRE2XtDicOdzfwwOpt6UZk+i63NRXrdFFgRmVk5wH+KLgXHALDMbl3TZm8AUd/8I8E/AoqjqERHpqXTjBU+9viNoFUBsT6IkO9YW9N3NomwRTAQ2uftmdz8MLAZmxF/g7ivcPfbu8QIwLMJ6RER6bPakKqaOG5Jy/h8ejm1LMXxi+ltdFuh4QZRBcCKwNe64PnYunWuAJ8MeMLO5ZlZjZjW7du3KYokiIl03b8qHUs69/vb+YEopBF1EYfcweP6HEVfWPVEGQXJXGiTu0tR+odknCILg78Ied/dF7l7t7tWVlZVZLFFEpOsmjKhIux/RLU/EFptd/mM4Pqkb6Z23CvI2l1EGQT0wPO54GLA9+SIz+whwFzDD3fdEWI+ISNak24+obQsKgE//S+oTly8suFlEUQbBKuAUMxtlZv2AmcCj8ReYWRXwIPBX7r4xwlpERLIu3RYUbbOIhk8MmUVEwc0iiiwI3L0JuA5YAqwDHnD318xsnpnNi132HWAQ8J9mtsbMaqKqR0QkCt/rBbOIIl1H4O5PuPtod/+Qu98cO3eHu98R+/5ad69w9zNiX9VR1iMikm0TRlQU/SwirSwWEemhdLOI2gaOC3wWkYJARKSH0s0iShg4TjeLqABaBQoCEZEsCNuLKGHgGMJnET37/WgLy4CCQEQkSzodOB4+EY6uSrzgwI68ry1QEIiIZEm6geO2O5oBnPs3qU9cflte1xYoCEREsihs4Hjllob2VkH1laljBXgQBnmiIBARyaIJIyr46MiKlPOdjhWsfyxvrQIFgYhIli24eGzKuZSxgjGfTn1inm5tqSAQEcmyjMYKwhaZ1a3IS6tAQSAiEoFOxwrS7UOUh7ECBYGISAQyGisI24eoflWEVYVTEIiIRCRsrOCltxraD8JaBQd25Hy1sYJARCQiYa2CXQcOc/+Lb7WfCGsV5Hi1sYJARCRCYa2Chb/b0H6QbrVxDlsFCgIRkQhNGFHBicf0Tzi3c39SqyBstfGLP4q4snYKAhGRiH3tE6eknLtn+ZvtB9VXwrFJu5fuWp+zqaQKAhGRiM2eVMXRR/ZJOLd7/8HEi06akvrEHC0wizQIzGyamW0ws01mtiDk8TFm9gczO2RmfxtlLSIi+TRx1KCE43feb0rsHjp9duqTcrTALLIgMLNy4HbgYmAcMMvMxiVdthf4a+AHUdUhIlIIwhaYpQwa52mBWZQtgonAJnff7O6HgcXAjPgL3H2nu68CGiOsQ0Qk7zIaNA6bSrr7jYgrizYITgS2xh3Xx86JiJSksEHjX6yKC4LhE1MHjQ/tj7iqaIPAQs55t17IbK6Z1ZhZza5du3pYlohIfsyeVMXxA49IOPfOn5M6RI5M2pZi//bI1xREGQT1wPC442HA9u68kLsvcvdqd6+urKzMSnEiIvkwoH/i7KG6vX9u34gO4Mw5qU96/oeR1hRlEKwCTjGzUWbWD5gJPBrhzxMRKXijKgeknEvYiK76Suif1Cp4561IZw9FFgTu3gRcBywB1gEPuPtrZjbPzOYBmNnxZlYPXA9828zqzeyDUdUkIpJvYbOHXnt7X+KJkSGzh17+eUQVQZ/OL+k+d38CeCLp3B1x3/+JoMtIRKQkTBhRwXED+rH7wOG2c+8dTBonOGc+rH888dyuDURFK4tFRHLszKrErp+UxWXDJ8KA4xOftGdTZPUoCEREciyseyhh7yGA8n6Jxwd2RDZOoCAQEcmxCSMqOPqoxJ75d94/nHjR0PGpT4xonEBBICKSBwP6dTJEG3Zz+4jGCRQEIiJ5cOIxRyYc795/OHE9Qdg4wbv1kdSiIBARyYOThwxMOZewniDMn/dGUouCQEQkDy4/K3XmfMp6gv5HJx4f3h/JdhMKAhGRPAgbMD7U1Jx40eSvpj7xpfuyXouCQEQkT5IHjI8oT/pIrr4SBp6QeK45aXZRFigIRETy5IP9+yYc9ykL+UguT7yGg/tSr+khBYGISJ40NrckHKfsRArQdKjj4yxQEIiI5EmnO5HmiIJARCRPwraa2LzrQOKJ5K0mko+zQEEgIpInE0ZUMOLYoxLO9U0eMD4yaQppS1PW61AQiIjkUZMn3sF336GkD/rkFkAEt65UEIiI5FHy2oGUtQRht6588UdZrUFBICKSR8lrB0LXEiTfuvLwn7Nag4JARCSPktcSJB8DcEzSdhTJ4wY9FGkQmNk0M9tgZpvMbEHI42Zm/xZ7/BUzOyvKekRECk3ymEDKGAGkLiLL8qKyyILAzMqB24GLgXHALDMbl3TZxcApsa+5QHY7vkREClynYwQQ+aKyKFsEE4FN7r7Z3Q8Di4EZSdfMAO7zwAvAMWY2NMKaREQKSqdjBBD5WoIog+BEYGvccX3sXFevwczmmlmNmdXs2rUr64WKiOTLuBOO7vAYSL1tZdhtLHsgyiCwkHPejWtw90XuXu3u1ZWVlVkpTkSkEMyb8iH6xD6J+5SFrzbmnPlQFtuptKxP+G0se6CTm2b2SD0wPO54GLC9G9eIiPRaE0ZU8IuvnM0Lm/cw+aRBTBhRkXrR8Ilw1ZOwZRmMPDc4zqIog2AVcIqZjQK2ATOB2UnXPApcZ2aLgUnAu+7+doQ1iYgUnAkjKsIDIN7wiVkPgFaRBYG7N5nZdcASoBy4x91fM7N5scfvAJ4ApgObgD8DV0VVj4iIhIuyRYC7P0HwYR9/7o647x34WpQ1iIhIx7SyWESkxCkIRERKnIJARKTEKQhEREqcuaes3ypoZrYLqOvgkuOA3Tkqp6dUa3SKqV7VGp1iqjfqWke4e+iK3KILgs6YWY27V+e7jkyo1ugUU72qNTrFVG8+a1XXkIhIiVMQiIiUuN4YBIvyXUAXqNboFFO9qjU6xVRv3mrtdWMEIiLSNb2xRSAiIl2gIBARKXFFEwRmNs3MNsRudL8gzTXnm9kaM3vNzJ6LO7/FzNbGHqsphHrN7FuxetaY2atm1mxmx2by3AKrNafvbQa1Hm1m/2NmL8f+Dq7K9LkFWG+hvbcVZvaQmb1iZivN7MOZPrfAas31+3qPme00s1fTPG5m9m+x3+UVMzsr7rHcvK/uXvBfBNtY/xE4CegHvAyMS7rmGOB1oCp2PDjusS3AcYVUb9L1nwGe7s5z81lrrt/bDP8O/h64NfZ9JbA3dm1O39ee1lug7+3/B74b+34M8PtC/ZtNV2uu39fYzzsPOAt4Nc3j04EnCe7YOBl4Mdfva7G0CCYCm9x9s7sfBhYT3Pg+3mzgQXd/C8Ddd+a4xniZ1BtvFvDzbj43n7XmWia1OjDQzAwYQPDB2pThcwup3lzLpNZxwO8B3H09MNLMhmT43EKpNefcfSnB/67pzADu88ALwDFmNpQcvq/FEgSZ3OR+NFBhZs+aWa2ZzYl7zIGnYufnRlwrZFYvAGZ2FDAN+HVXn5slPakVcvveZlLrfwBjCW55uhb4hru3ZPjcbOtJvVB47+3LwOcAzGwiMILg9rKF+DebrlbI/edBZ9L9Pjl7XyO9MU0WZXKT+z7ABOAC4EjgD2b2grtvBM5x9+1mNhj4rZmtj6V0Putt9Rlgubu3/ouhK8/Nhp7UCrl9bzOp9VPAGuCTwIdiNS3L8LnZ1u163X0fhffe3gLcZmZrCELrJYLWSyH+zaarFXL/edCZdL9Pzt7XYmkRZHKT+3rgN+7+nrvvBpYCpwO4+/bYf3cCDxE0ufJdb6uZJHa1dOW52dCTWnP93mZS61UEXYTu7puANwn6iHP9vpLhz0xXb8G9t+6+z92vcvczgDkEYxpvZvLcAqo1H58HnUn3++Tufc3VgElPvgj+tb8ZGEX7oMlpSdeMJegT7AMcBbwKfBj4ADAwds0HgBXAtHzXG7vuaIK+ww909bkFUmtO39sM/w5+BPxj7PshwDaCXR1z+r5mod5CfG+PoX0g+8sE/doF+TfbQa05/zyI/ayRpB8s/jSJg8Urc/2+RvrLZ/mNnA5sJBhFvzF2bh4wL+6abxHMHHoVmB87d1LsDXwZeK31uQVS75XA4kyeW4i15uO97axW4ATgKYLugFeBv8zX+9qTegv0vf0Y8AawHngQqCjUv9l0tebpff058DbQSPCv/GuSajXg9tjvshaozvX7qi0mRERKXLGMEYiISEQUBCIiJU5BICJS4hQEIiIlTkEgIlLiFAQiIiVOQSAiUuIUBCLdYGYjzWy9md0b20P+V7F7C2wws1Nj1/zczL6c71pFOqMgEOm+U4FF7v4RYB/BVgbXAT81s5kEq1l/nM8CRTKhIBDpvq3uvjz2/X8DH3f33xJsE3A7cG3eKhPpAgWBSPcl78/iZlZGsAHi+8CxuS9JpOsUBCLdV2VmH4t9Pwt4HvgmsC52fI+Z9c1XcSKZUhCIdN864Etm9grBv/5/S9Ad9DfuvozgnhjfzmN9IhnR7qMi3WBmI4HH3P3D+a5FpKfUIhARKXFqEYiIlDi1CERESpyCQESkxCkIRERKnIJARKTEKQhERErc/wK1Ruc+AQXZLgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "swiftersim.ds.plot.scatter(x='px', y='py', hue='id', hue_style=\"discrete\", marker='.')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading Swiftest file param.swiftest.in\n", - "Reading in time 2.002e-01\n", - "Creating Dataset\n", - "Successfully converted 586 output frames.\n", - "Swiftest simulation data stored as xarray DataSet .ds\n" - ] - } - ], - "source": [ - "swiftestsim = swiftest.Simulation(param_file=\"param.swiftest.in\")\n", - "swiftestsim.bin2xr()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ,\n", - " ]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "swiftestsim.ds.plot.scatter(x='px', y='py', hue='id', hue_style=\"discrete\", marker='.')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset>\n",
    -       "Dimensions:   (id: 2, time: 397)\n",
    -       "Coordinates:\n",
    -       "  * id        (id) int64 2 100\n",
    -       "    time (y)  (time) float64 0.0 0.0003422 0.0006845 ... 0.1348 0.1352 0.1355\n",
    -       "Dimensions without coordinates: time\n",
    -       "Data variables:\n",
    -       "    Mass      (time, id) float64 0.0 nan 0.0 nan 0.0 nan ... nan 0.0 nan 0.0 nan\n",
    -       "    Radius    (time, id) float64 0.0 nan 0.0 nan 0.0 nan ... nan 0.0 nan 0.0 nan\n",
    -       "    delta x   (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n",
    -       "    delta y   (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n",
    -       "    pz        (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n",
    -       "    vx        (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n",
    -       "    vy        (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n",
    -       "    vz        (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan
    " - ], - "text/plain": [ - "\n", - "Dimensions: (id: 2, time: 397)\n", - "Coordinates:\n", - " * id (id) int64 2 100\n", - " time (y) (time) float64 0.0 0.0003422 0.0006845 ... 0.1348 0.1352 0.1355\n", - "Dimensions without coordinates: time\n", - "Data variables:\n", - " Mass (time, id) float64 0.0 nan 0.0 nan 0.0 nan ... nan 0.0 nan 0.0 nan\n", - " Radius (time, id) float64 0.0 nan 0.0 nan 0.0 nan ... nan 0.0 nan 0.0 nan\n", - " delta x (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n", - " delta y (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n", - " pz (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n", - " vx (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n", - " vy (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan\n", - " vz (time, id) float64 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 nan" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "swiftdiff = swiftestsim.ds - swiftersim.ds\n", - "swiftdiff = swiftdiff.rename_vars({'time' : 'time (y)','px' : 'delta x','py' : 'delta y'})\n", - "swiftdiff" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEGCAYAAABLgMOSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAWhklEQVR4nO3df7BcZZ3n8feHGzC6wPAbAzeYKFETxNVwDSyr+APjQnSIiMPC4BrELdZSWKccyo2D5eqWo4wUDlqyUoDWRoet7KiDMFYEFbCkdCMEEBhkMBnEzYUMhMgwUAxC4Lt/dAdv7nSSzrm3b/cl71dVV/d5znPO+T7VlfvJ+dHnpKqQJGln7dbvAiRJ05MBIklqxACRJDVigEiSGjFAJEmNzOh3AVPpgAMOqDlz5vS7DEmaVm699dZHqurA8e27VIDMmTOHNWvW9LsMSZpWkvymU7uHsCRJjRggkqRGDBBJUiO71DkQSZoMzzzzDKOjozz11FP9LmVSzZw5k+HhYXbfffeu+hsgkrSTRkdH2WuvvZgzZw5J+l3OpKgqNm3axOjoKHPnzu1qGQ9hSdJOeuqpp9h///1fMOEBkIT9999/p/aqDBBJauCFFB5b7OyYDBBJUiMGiCQNmGOPPbZj+5lnnsm3v/3tKa5m2wwQSRowP/vZz/pdQle8CkuSBsyee+7JE088QVVx7rnncsMNNzB37lwG7Qmy7oFI0oC66qqruPfee7nrrru4/PLLB27PxACRpAH1k5/8hNNPP52hoSEOOeQQ3va2t/W7pK0YIJI0wAb5cmEDRJIG1HHHHcfKlSt59tln2bBhAzfeeGO/S9qKJ9ElaUCdfPLJ3HDDDRx55JG88pWv5M1vfnO/S9qKASJJA+aJJ54AWoevvvKVr/S5mm3zEJYkqREDRJLUiAEiSWrEAJEkNWKASJIaMUAkSY0YIJI0zaxfv563vvWtzJ8/nyOOOIIvfelLfanD34FI0jQzY8YMLrroIhYuXMjjjz/OUUcdxeLFi1mwYMGU1tHXPZAkJyS5N8m6JMs7zE+SL7fn35lk4bj5Q0luT/K9qatakvpr1qxZLFzY+nO41157MX/+fB544IEpr6NvAZJkCLgEOBFYAJyeZHx8ngjMa7/OBr46bv5HgXt6XKokTditv3mUS25cx62/eXRS13v//fdz++23c/TRR0/qervRzz2QRcC6qrqvqp4GVgJLx/VZCnyjWlYD+ySZBZBkGHgncMVUFi1JO+vW3zzKGVes5qIf3MsZV6yetBB54oknOOWUU7j44ovZe++9J2WdO6OfAXIosH7M9Gi7rds+FwMfB57b3kaSnJ1kTZI1GzdunFDBktTE6vs28fTm53iu4JnNz7H6vk0TXuczzzzDKaecwhlnnMF73vOeSahy5/UzQDrd5H788xo79knyLuDhqrp1RxupqsuqaqSqRg488MAmdUrShBzz8v3ZY8ZuDAV2n7Ebx7x8/wmtr6r44Ac/yPz58/nYxz42SVXuvH5ehTUKzB4zPQw82GWf9wInJVkCzAT2TvJXVfW+HtYrSY0c9bJ9ufI/H8Pq+zZxzMv356iX7Tuh9f30pz/lm9/8JkceeSSve93rAPjc5z7HkiVLJqHa7vUzQG4B5iWZCzwAnAb88bg+1wDnJFkJHA08VlUbgE+0XyR5C3Ce4SFpkB31sn0nHBxbvPGNb6Rq/AGbqde3AKmqzUnOAa4DhoCvV9XdST7Unn8psApYAqwDngQ+0K96JUlb6+sPCatqFa2QGNt26ZjPBXxkB+v4MfDjHpQnSdoOb2UiSWrEAJEkNWKASJIaMUAkSY0YIJI0DZ111lkcdNBBvOY1r3m+7be//S2LFy9m3rx5LF68mEcf/f0tUz7/+c9z+OGH86pXvYrrrrtuUmowQCRpGjrzzDO59tprt2q74IILOP7441m7di3HH388F1xwAQC//OUvWblyJXfffTfXXnstH/7wh3n22WcnXIMBIknT0HHHHcd+++23VdvVV1/NsmXLAFi2bBnf/e53n28/7bTTeNGLXsTcuXM5/PDDufnmmydcgwEiSVNh/c1w00Wt9x556KGHmDVrFtB6ZsjDDz8MwAMPPMDs2b+/K9Tw8PCkPD/EJxJKUq+tvxlWnATPPg1De8Cya2D2oinbfKfbniSd7lW7c9wDkaReu/+mVnjUs633+2/qyWYOPvhgNmzYAMCGDRs46KCDgNYex/r1v38yxujoKIcccsiEt2eASFKvzXlTa88jQ633OW/qyWZOOukkVqxYAcCKFStYunTp8+0rV67kd7/7Hb/+9a9Zu3YtixZNfA/IQ1iS1GuzF7UOW91/Uys8JuHw1emnn86Pf/xjHnnkEYaHh/nMZz7D8uXLOfXUU/na177GYYcdxre+9S0AjjjiCE499VQWLFjAjBkzuOSSSxgaGppwDRmEWwJPlZGRkVqzZk2/y5A0zd1zzz3Mnz+/32X0RKexJbm1qkbG9/UQliSpEQNEktSIASJJDbwQD//v7JgMEEnaSTNnzmTTpk0vqBCpKjZt2sTMmTO7XsarsCRpJw0PDzM6OsrGjRv7XcqkmjlzJsPDw133N0AkaSftvvvuzJ07t99l9J2HsCRJjRggkqRGDBBJUiMGiCSpEQNEktSIASJJasQAkSQ1YoBIkhoxQCRJjRggkqRGDBBJUiN9DZAkJyS5N8m6JMs7zE+SL7fn35lkYbt9dpIbk9yT5O4kH5366iVp19a3AEkyBFwCnAgsAE5PsmBctxOBee3X2cBX2+2bgT+tqvnAMcBHOiwrSeqhfu6BLALWVdV9VfU0sBJYOq7PUuAb1bIa2CfJrKraUFW3AVTV48A9wKFTWbwk7er6GSCHAuvHTI/yr0Ngh32SzAFeD/x88kuUJG1LPwMkHdrGP95ru32S7Al8B/iTqvrnjhtJzk6yJsmaF9rDXySpn/oZIKPA7DHTw8CD3fZJsjut8Liyqv5mWxupqsuqaqSqRg488MBJKVyS1N8AuQWYl2Rukj2A04BrxvW5Bnh/+2qsY4DHqmpDkgBfA+6pqi9ObdmSJOjjI22ranOSc4DrgCHg61V1d5IPtedfCqwClgDrgCeBD7QX//fAfwLuSvKLdtufVdWqKRyCJO3SUjX+tMML18jISK1Zs6bfZUjStJLk1qoaGd/uL9ElSY0YIJKkRgwQSVIjBogkqREDRJLUiAEiSWrEAJEkNWKASJIaMUAkSY0YIJKkRgwQSVIjBogkqREDRJLUiAEiSWrEAJEkNWKASJIaMUAkSY0YIJKkRnYYIEmGpqIQSdL00s0eyLokFyZZ0PNqJEnTRjcB8lrgV8AVSVYnOTvJ3j2uS5I04HYYIFX1eFVdXlXHAh8H/juwIcmKJIf3vEJJ0kDq6hxIkpOSXAV8CbgIeDnwt8CqHtcnSRpQM7rosxa4Ebiwqn42pv3bSY7rTVmSpEHXTYC8tqqe6DSjqv7rJNcjSZomujkH0jE8JEm7Nn9IKElqxACRJDXSzTkQkrwTOAKYuaWtqv5Hr4qSJA2+bi7jvRT4j8C5QIA/Al7W47okSQOum0NYx1bV+4FHq+ozwL8DZve2LEnSoOsmQP6l/f5kkkOAZ4C5k7HxJCckuTfJuiTLO8xPki+359+ZZGG3y0qSequbcyDfS7IPcCFwG1DAFRPdcPsuv5cAi4FR4JYk11TVL8d0OxGY134dDXwVOLrLZaVpYfMn/4DddoPnnoMZn32s3+VIXetmD+QLVfVPVfUdWuc+Xg18dhK2vQhYV1X3VdXTwEpg6bg+S4FvVMtqYJ8ks7pcVhp4mz/5BwwNQQJDQ61pabroJkD+75YPVfW7qnpsbNsEHAqsHzM92m7rpk83ywLQvnvwmiRrNm7cOOGipcm0W/tfYLL1tDQdbPMQVpKX0vqj/OIkr6d1BRbA3sBLJmHb6dBWXfbpZtlWY9VlwGUAIyMjHftI/fLcc609j6rfT5shmi62dw7kPwBnAsPAF8e0Pw782SRse5Str+YaBh7sss8eXSwrDbwZn33McyCatrYZIFW1AliR5JT2+Y/JdgswL8lc4AHgNOCPx/W5BjgnyUpaJ9Efq6oNSTZ2saw0LWwJDfc8NN1s7xDWxzp93qKqvji+bWdU1eYk5wDXAUPA16vq7iQfas+/lNbzRpYA64AngQ9sb9mJ1CNJ2jnbO4S1V683XlWrGPdQqnZwbPlcwEe6XVaSNHW2dwjrM1NZiCRpeunmXlivTHJ9kr9rT782ySd7X5okaZB1c97ucuATtG5hQlXdSeuktSRpF9ZNgLykqm4e17a5F8VIkqaPbgLkkSSvoP1DvSTvBTb0tCpJ0sDr5maKH6H1S+5XJ3kA+DXwvp5WJUkaeDsMkKq6D3h7kn8D7FZVj/e+LEnSoOvqh4Tj2oGJ/5BQkjS9dfNDwlcBb6B1WxGAPwR+0suiJEmDb4c/JEzyA2DhlkNXST4NfGtKqpMkDaxursI6DHh6zPTTwJyeVCNJmja6uQrrm8DNSa6idSnvycCKnlYlSRp43VyF9edJvg+8qd30gaq6vbdlSZIGXTd7IFTVbcBtPa5FkjSN+AwbSVIjBogkqREDRJLUiAEiSWrEAJEkNWKASJIaMUAkSY0YIJKkRgwQSVIjBogkqREDRJLUiAEiSWrEAJEkNWKASJIaMUAkSY0YIJKkRvoSIEn2S/LDJGvb7/tuo98JSe5Nsi7J8jHtFyb5+yR3JrkqyT5TVrwkCejfHshy4Pqqmgdc357eSpIh4BLgRGABcHqSBe3ZPwReU1WvBX4FfGJKqpYkPa9fAbIUWNH+vAJ4d4c+i4B1VXVfVT0NrGwvR1X9oKo2t/utBoZ7W64kabx+BcjBVbUBoP1+UIc+hwLrx0yPttvGOwv4/qRXKEnarhm9WnGSHwEv7TDr/G5X0aGtxm3jfGAzcOV26jgbOBvgsMMO63LTkqQd6VmAVNXbtzUvyUNJZlXVhiSzgIc7dBsFZo+ZHgYeHLOOZcC7gOOrqtiGqroMuAxgZGRkm/0kSTunX4ewrgGWtT8vA67u0OcWYF6SuUn2AE5rL0eSE4D/BpxUVU9OQb2SpHH6FSAXAIuTrAUWt6dJckiSVQDtk+TnANcB9wB/XVV3t5f/CrAX8MMkv0hy6VQPQJJ2dT07hLU9VbUJOL5D+4PAkjHTq4BVHfod3tMCJUk75C/RJUmNGCCSpEYMEElSIwaIJKkRA0SS1IgBIklqxACRJDVigEiSGjFAJEmNGCCSpEYMEElSIwaIJKkRA0SS1IgBIklqxACRJDVigEiSGjFAJEmNGCCSpEYMEElSIwaIJKkRA0SS1IgBIklqxACRJDVigEiSGjFAJEmNGCCSpEYMEElSIwaIJKkRA0SS1IgBIklqxACRJDXSlwBJsl+SHyZZ237fdxv9Tkhyb5J1SZZ3mH9ekkpyQO+rliSN1a89kOXA9VU1D7i+Pb2VJEPAJcCJwALg9CQLxsyfDSwG/t+UVCxJ2kq/AmQpsKL9eQXw7g59FgHrquq+qnoaWNlebou/BD4OVA/rlCRtQ78C5OCq2gDQfj+oQ59DgfVjpkfbbSQ5CXigqu7Y0YaSnJ1kTZI1GzdunHjlkiQAZvRqxUl+BLy0w6zzu11Fh7ZK8pL2Ot7RzUqq6jLgMoCRkRH3ViRpkvQsQKrq7dual+ShJLOqakOSWcDDHbqNArPHTA8DDwKvAOYCdyTZ0n5bkkVV9Y+TNgBJ0nb16xDWNcCy9udlwNUd+twCzEsyN8kewGnANVV1V1UdVFVzqmoOraBZaHhI0tTqV4BcACxOspbWlVQXACQ5JMkqgKraDJwDXAfcA/x1Vd3dp3olSeP07BDW9lTVJuD4Du0PAkvGTK8CVu1gXXMmuz5J0o75S3RJUiMGiCSpEQNEktSIASJJasQAkSQ1YoBIkhoxQCRJjRggkqRGDBBJUiMGiCSpEQNEktSIASJJasQAkSQ1YoBIkhoxQCRJjRggkqRGDBBJUiMGiCSpEQNEktSIASJJasQAkSQ1YoBIkhoxQCRJjRggkqRGUlX9rmHKJNkI/KbfdTRwAPBIv4uYQrvaeMEx7yqm65hfVlUHjm/cpQJkukqypqpG+l3HVNnVxguOeVfxQhuzh7AkSY0YIJKkRgyQ6eGyfhcwxXa18YJj3lW8oMbsORBJUiPugUiSGjFAJEmNGCADIMl+SX6YZG37fd9t9Dshyb1J1iVZ3mH+eUkqyQG9r3piJjrmJBcm+fskdya5Ksk+U1b8Turie0uSL7fn35lkYbfLDqqmY04yO8mNSe5JcneSj0599c1M5Htuzx9KcnuS701d1RNUVb76/AK+ACxvf14O/EWHPkPAPwAvB/YA7gAWjJk/G7iO1g8lD+j3mHo9ZuAdwIz257/otPwgvHb0vbX7LAG+DwQ4Bvh5t8sO4muCY54FLGx/3gv41Qt9zGPmfwz438D3+j2ebl/ugQyGpcCK9ucVwLs79FkErKuq+6rqaWBle7kt/hL4ODBdroqY0Jir6gdVtbndbzUw3NtyG9vR90Z7+hvVshrYJ8msLpcdRI3HXFUbquo2gKp6HLgHOHQqi29oIt8zSYaBdwJXTGXRE2WADIaDq2oDQPv9oA59DgXWj5kebbeR5CTggaq6o9eFTqIJjXmcs2j9z24QdTOGbfXpdvyDZiJjfl6SOcDrgZ9PfomTbqJjvpjWfwCf61F9PTGj3wXsKpL8CHhph1nnd7uKDm2V5CXtdbyjaW290qsxj9vG+cBm4Mqdq27K7HAM2+nTzbKDaCJjbs1M9gS+A/xJVf3zJNbWK43HnORdwMNVdWuSt0x2Yb1kgEyRqnr7tuYleWjL7nt7l/bhDt1GaZ3n2GIYeBB4BTAXuCPJlvbbkiyqqn+ctAE00MMxb1nHMuBdwPHVPog8gLY7hh302aOLZQfRRMZMkt1phceVVfU3PaxzMk1kzO8FTkqyBJgJ7J3kr6rqfT2sd3L0+ySMrwK4kK1PKH+hQ58ZwH20wmLLSbojOvS7n+lxEn1CYwZOAH4JHNjvsexgnDv83mgd+x57cvXmnfnOB+01wTEH+AZwcb/HMVVjHtfnLUyjk+h9L8BXAewPXA+sbb/v124/BFg1pt8SWlel/ANw/jbWNV0CZEJjBtbROp78i/br0n6PaTtj/VdjAD4EfKj9OcAl7fl3ASM7850P4qvpmIE30jr0c+eY73ZJv8fT6+95zDqmVYB4KxNJUiNehSVJasQAkSQ1YoBIkhoxQCRJjRggkqRGDBBpkiX5dJLzuu2T5Mwkh0xNddLkMUCk/juT1u9fpGnFAJEmQZLz28+C+BHwqjHtr0hybZJbk9yU5NXjlnsvMAJcmeQXSV6c5FNJbknyd0kuS/seNeOWuzrJ+9uf/0uSQb0XmF7ADBBpgpIcBZxG686x7wHeMGb2ZcC5VXUUcB7wP8cuW1XfBtYAZ1TV66rqX4CvVNUbquo1wItp3e9rvLOBTyV5E/CnwLmTPCxph7yZojRxbwKuqqonAZJc037fEzgW+NaYnYgXdbG+tyb5OPASYD/gbuBvx3aoqoeSfAq4ETi5qn47GQORdoYBIk2OTvcE2g34p6p6XbcrSTKT1l7KSFWtT/JpWndo7eRIYBOeP1GfeAhLmrifACe3z1/sBfwhQLWeY/HrJH8Ezz8T+992WP5xWo9vhd+HxSPtPZj3dtpgkkXAibQOm52XZO6kjUbqkgEiTVC1HsH6f2jdOfY7wE1jZp8BfDDJHbQORXV6JO3/Ai5N8gvgd8DltO7W+l3glvGdk7yo3eesqnqQ1jmQr3c62S71knfjlSQ14h6IJKkRA0SS1IgBIklqxACRJDVigEiSGjFAJEmNGCCSpEb+P2bWIB01OnwFAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "swiftdiff.plot.scatter(x='delta x', y='delta y', hue='id', hue_style=\"discrete\", marker='.')" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.savefig('rmvsdiff.png')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "swiftestOOF", - "language": "python", - "name": "swiftestoof" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/rmvs_swifter_comparison/1pl_1tp_encounter/swiftest_vs_swifter.ipynb b/examples/rmvs_swifter_comparison/1pl_1tp_encounter/swiftest_vs_swifter.ipynb index b62f2f3d1..52568fd84 100644 --- a/examples/rmvs_swifter_comparison/1pl_1tp_encounter/swiftest_vs_swifter.ipynb +++ b/examples/rmvs_swifter_comparison/1pl_1tp_encounter/swiftest_vs_swifter.ipynb @@ -81,8 +81,8 @@ { "data": { "text/plain": [ - "[,\n", - " ]" + "[,\n", + " ]" ] }, "execution_count": 6, diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py index 11e04e0f3..321c79932 100755 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/init_cond.py @@ -24,7 +24,7 @@ sim.param['T0'] = 0.0 sim.param['DT'] = 1.0 -sim.param['TSTOP'] = 365.25 +sim.param['TSTOP'] = 365.25e1 sim.param['ISTEP_OUT'] = 11 sim.param['ISTEP_DUMP'] = 1 sim.param['CHK_QMIN_COORD'] = "HELIO" diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in index ab8bf65ca..aa33eeaa4 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swifter.in @@ -1,6 +1,6 @@ ! VERSION Swifter parameter file converted from Swiftest T0 0.0 -TSTOP 365.25 +TSTOP 3652.5 DT 1.0 ISTEP_OUT 11 ISTEP_DUMP 1 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in index 385ac46bb..6504c9637 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/param.swiftest.in @@ -1,6 +1,6 @@ ! VERSION Swiftest parameter input T0 0.0 -TSTOP 365.25 +TSTOP 3652.5 DT 1.0 ISTEP_OUT 11 ISTEP_DUMP 1 diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index e8d0dbc26..181cd0237 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -6,9 +6,8 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "import xarray as xr\n", "import swiftest\n", + "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, @@ -22,9 +21,9 @@ "output_type": "stream", "text": [ "Reading Swifter file param.swifter.in\n", - "Reading in time 3.630e+02\n", + "Reading in time 3.652e+03\n", "Creating Dataset\n", - "Successfully converted 34 output frames.\n", + "Successfully converted 333 output frames.\n", "Swifter simulation data stored as xarray DataSet .ds\n" ] } @@ -46,9 +45,9 @@ "output_type": "stream", "text": [ "Reading Swiftest file param.swiftest.in\n", - "Reading in time 3.630e+02\n", + "Reading in time 3.652e+03\n", "Creating Dataset\n", - "Successfully converted 34 output frames.\n", + "Successfully converted 333 output frames.\n", "Swiftest simulation data stored as xarray DataSet .ds\n" ] } @@ -100,7 +99,129 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "swiftdiff['rmag'].sel(id=plidx).plot.line(ax=ax, x=\"time (d)\")\n", + "ax.set_ylabel(\"$|\\mathbf{r}_{swiftest} - \\mathbf{r}_{swifter}|$\")\n", + "ax.set_title(\"Heliocentric position differences \\n Planets only\")\n", + "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-planets-rmag.png\", facecolor='white', transparent=False, dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "swiftdiff['vmag'].sel(id=plidx).plot.line(ax=ax, x=\"time (d)\")\n", + "ax.set_ylabel(\"$|\\mathbf{v}_{swiftest} - \\mathbf{v}_{swifter}|$\")\n", + "ax.set_title(\"Heliocentric velocity differences \\n Planets only\")\n", + "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-planets-vmag.png\", facecolor='white', transparent=False, dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "swiftdiff['rmag'].sel(id=tpidx).plot.line(ax=ax, x=\"time (d)\")\n", + "ax.set_ylabel(\"$|\\mathbf{r}_{swiftest} - \\mathbf{r}_{swifter}|$\")\n", + "ax.set_title(\"Heliocentric position differences \\n Test Particles only\")\n", + "legend = ax.legend()\n", + "legend.remove()\n", + "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-testparticles-rmag.png\", facecolor='white', transparent=False, dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "swiftdiff['vmag'].sel(id=tpidx).plot.line(ax=ax, x=\"time (d)\")\n", + "ax.set_ylabel(\"$|\\mathbf{v}_{swiftest} - \\mathbf{v}_{swifter}|$\")\n", + "ax.set_title(\"Heliocentric velocity differences \\n Test Particles only\")\n", + "legend = ax.legend()\n", + "legend.remove()\n", + "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-testparticles-vmag.png\", facecolor='white', transparent=False, dpi=300)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -457,154 +578,147 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
    <xarray.DataArray 'px' (time (d): 34)>\n",
    -       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
    -       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
    +       "
    <xarray.DataArray 'rmag' (time (d): 333)>\n",
    +       "array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "...\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
    +       "       0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 2.13180114e-12,\n",
    +       "       6.30252092e-12, 1.12657932e-11, 1.70947866e-11, 2.35410127e-11,\n",
    +       "       3.01486367e-11, 3.63634702e-11, 4.16224366e-11, 4.54289913e-11,\n",
    +       "       4.74142910e-11, 4.73824194e-11, 4.53327404e-11, 4.14594589e-11,\n",
    +       "       3.61300773e-11, 2.98446324e-11, 2.31845539e-11, 1.67548923e-11,\n",
    +       "       1.11262399e-11, 6.78147816e-12, 4.07218435e-12, 3.25977426e-12,\n",
    +       "       4.52137637e-12, 7.66342713e-12, 1.23344633e-11, 1.81013732e-11,\n",
    +       "       2.44264806e-11, 3.07065663e-11, 3.63320360e-11, 4.07478190e-11,\n",
    +       "       4.35128453e-11, 4.43475549e-11, 4.31649567e-11, 4.00801554e-11,\n",
    +       "       3.53984592e-11, 2.95862328e-11, 2.32329074e-11, 1.70175537e-11,\n",
    +       "       1.17040422e-11])\n",
            "Coordinates:\n",
    -       "    id        int64 101\n",
    -       "  * time (d)  (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0
    " + " id int64 2\n", + " * time (d) (time (d)) float64 0.0 11.0 22.0 ... 3.63e+03 3.641e+03 3.652e+03
    " ], "text/plain": [ - "\n", - "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n", + "\n", + "array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + "...\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 2.13180114e-12,\n", + " 6.30252092e-12, 1.12657932e-11, 1.70947866e-11, 2.35410127e-11,\n", + " 3.01486367e-11, 3.63634702e-11, 4.16224366e-11, 4.54289913e-11,\n", + " 4.74142910e-11, 4.73824194e-11, 4.53327404e-11, 4.14594589e-11,\n", + " 3.61300773e-11, 2.98446324e-11, 2.31845539e-11, 1.67548923e-11,\n", + " 1.11262399e-11, 6.78147816e-12, 4.07218435e-12, 3.25977426e-12,\n", + " 4.52137637e-12, 7.66342713e-12, 1.23344633e-11, 1.81013732e-11,\n", + " 2.44264806e-11, 3.07065663e-11, 3.63320360e-11, 4.07478190e-11,\n", + " 4.35128453e-11, 4.43475549e-11, 4.31649567e-11, 4.00801554e-11,\n", + " 3.53984592e-11, 2.95862328e-11, 2.32329074e-11, 1.70175537e-11,\n", + " 1.17040422e-11])\n", "Coordinates:\n", - " id int64 101\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 33.0 ... 330.0 341.0 352.0 363.0" + " id int64 2\n", + " * time (d) (time (d)) float64 0.0 11.0 22.0 ... 3.63e+03 3.641e+03 3.652e+03" ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "swiftdiff['px'].sel(id=102)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "swiftdiff['rmag'].sel(id=plidx).plot.line(ax=ax, x=\"time (d)\")\n", - "ax.set_ylabel(\"$|\\mathbf{r}_{swiftest} - \\mathbf{r}_{swifter}|$\")\n", - "ax.set_title(\"Heliocentric position differences \\n Planets only\")\n", - "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-planets-rmag.png\", facecolor='white', transparent=False, dpi=300)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "swiftdiff['vmag'].sel(id=plidx).plot.line(ax=ax, x=\"time (d)\")\n", - "ax.set_ylabel(\"$|\\mathbf{v}_{swiftest} - \\mathbf{v}_{swifter}|$\")\n", - "ax.set_title(\"Heliocentric velocity differences \\n Planets only\")\n", - "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-planets-vmag.png\", facecolor='white', transparent=False, dpi=300)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No handles with labels found to put in legend.\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAElCAYAAADnZln1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAv1UlEQVR4nO3deXxc5XX/8c/RZlmLLS/CGPBCDMYsYTFmj8EYTAgpS8IvpIVCAySkSSAkgRCStJTQpCFJm5S20JawmIStJCxJCFuQDMZmsQ02YDAYjA3esGVLtkcja53z++NembGQZGk8M3dG+r5fr3npztzlOfOMdHTnufeea+6OiIgMfAVRByAiItmhhC8iMkgo4YuIDBJK+CIig4QSvojIIKGELyIySCjhDzJmdr2Z3R1OjzezRjMrjDqu3pjZdDN7O+o4YNexZLNPzewZM/tyOH2BmT2VNO8EM3snjOUcMxtjZnPNLGZm/5bp2CQ3KeHnGTNbZWandnntS2Y2r7/bcvcP3L3C3TvSF2H/mJmb2X69LePuz7n7AdmKqTddY+n6eUTVp+5+j7uflvTSDcB/hbE8AlwGbAKGuftV2YxNcocSvuQ0MyuKOoY8NQF4o8vzNz2FKy31GQwcSvgDkJntZWYPmlmdma00s2/2sNzEcA+7KGm9P5pZvZm9a2ZfSVq20Mx+YGYrwmGBl81sXDhvipn9JVzvbTM7L2m92WZ2s5n9OVzvJTObFM6bGy72ajj08EUzm2Fma8zse2b2IXBn52tJ2xxnZg+F72+zmf1XD+/vejP7vZn9X9j2K2Z2WNL8A8NhkS1m9oaZnZU07wwzezNcb62ZXR2+viMWM/stMB74Uxj/Nf3s0+vN7AEz+03YzhtmNq2Xz3WWmb1lZlvD92xJ83Z8yzOzFcAnkuK6D/g74Jrw+almVmBm14af5+YwjpFdfi8uNbMPgNrw9UvMbJmZNZjZk2Y2Ial9N7O/D4eRGsLPPDm+r4TrxsJ+nZrUP93+rprZ0Wa2yMy2mdkGM/tlT30jfeTueuTRA1gFnNrltS8B88LpAuBl4DqghOAP/z3g0+H864G7w+mJgANF4fNngVuAUuBwoA44JZz3XeB14ACCRHMYMAooB1YDFwNFwFSCoYODw/VmA/XA0eH8e4D7k2J3YL+k5zOAduBnwBBgaPjamnB+IfAq8Kuw7VLgUz301fVAG/D/gGLgamBlOF0MvAv8IOynmUAMOCBcdz0wPZweAUxNim9NT59HP/v0eqAZOCN8Xz8FXuzhvYwGtiW9l2+H/fTlrr8DPcQ1G/hx0vNvAS8C+4T9/L/AfV3ew2/CPh4KnBP214Hh5/gPwPNdPsdHgSqCf4J1wOnhvC8Aa4GjCH539iP4xrGr39UXgAvD6Qrg2Kj//vL9EXkAevTzAwv+kBuBLUmPJj5K+McAH3RZ5/vAneH09XST8IFxQAdQmbTeT4HZ4fTbwNndxPNF4Lkur/0v8E/h9GzgtqR5ZwBvJT3vLuG3AqVdXutM+MeFyaSoD311PUkJNEww64Hp4eNDoCBp/n3A9eH0B8BXCca86S6WpM+j24Tfhz69Hng6ad5BwPYe3stFXd6LAWtIPeEvI/zHEz4fS/DPsSjpPXwiaf7jwKVd+rIJmJD0OX4qaf4DwLXh9JPAld28p139rs4FfgSMjvrvbqA8NKSTn85x96rOB/D1pHkTgL3CYYotZraFYC92zC62uRdQ7+6xpNfeB/YOp8cBK7pZbwJwTJf2LgD2TFrmw6TpJoK9td7UuXtzD/PGAe+7e/suttFpdeeEuycIkuRe4WN1+Fqn5Pd7LsE/p/fN7FkzO66P7SXbVZ/Cx/um1LofM9+ry3vx5OcpmAA8nPSZLSP455T8e7K6y/I3JS1fT/BPp7f30vk59/a709vv6qXAZOAtM1toZn/V73cpO9HBmIFnNbDS3ffv53rrgJFmVpmUoMYTfBXv3O4kYGk37T3r7rNSDbgbvR1YXA2MN7OiPib9cZ0TZlZAMISxrnOemRUkJf3xwHIAd18InG1mxcDlBHusO7bVx1h31af9sb7Le7Ee4umr1cAl7j6/6wwzmxhOepflf+Lu96TY1qQeXu/xd9Xd3wH+JvzcPg/83sxGuXs8hRgEHbQdiBYA28KDnkMtONh6iJkd1dtK7r4aeB74qZmVmtmhBHtYnX/gtwH/bGb7W+BQMxtFMG472cwuNLPi8HGUmR3Yx3g3EIzd9uf9rQduNLPyMNYTeln+SDP7fLjX/C2ghWDs+iUgTnAgs9jMZgBnAvebWYkF57UPd/c2grHznk6z7DH+PvRpf/wZODjpvXyTnb9F9df/AD/pPPBqZtVmdvYulv++mR0cLj/czL7Qx7ZuA642syPD3539wnZ7/V01s781s+rwH/KWcFuRnUI8ECjhDzAenP99JsEBwpUEB1BvA4b3YfW/IRi/XQc8TDAO/5dw3i8J9nKfIkiAtwNDwz3X04C/Dtf7kI8OuPbF9cBd4Vf683a1cNL7249gnH0NwXGEnvwhnN8AXAh83t3b3L0VOAv4DEEf3QJc5O5vhetdCKwys23A3wN/28P2fwr8Qxj/1d3M761P+8zdNxEc/LwR2AzsD3xs77wfbgL+CDxlZjGCf4LH9NL+wwSf6/1hnywl6Lu+xP474CfAvQQHxh8BRvbhd/V04A0zawzj/etehvqkDyw8OCIy4JjZ9QQHhHtK1iKDivbwRUQGCSV8EZFBQkM6IiKDhPbwRUQGCSV8kRRYl3LEvSy3oxx1LrCgttGPo45DoqGELxlnH9WI73y4mcWTnk9PYZsfKxPdZf4MM0uE249ZUNTt4hTj36kgGnRbjlgk5+lKW8k4d/+ApHIKZubAYe7+boabXufu+4RXpZ5NcKXmS+7+Zl830EOZA5G8pD18iZSZDTGzfzWzDywogfs/ZjY0nDfazB4NL2qqN7PnLCjr+7GyxL214YFHCC6+OsjMPmtmiy0ou7s6PF+/M57uSgN3lnHeErZ3nHW56YyZHWwflYjeYGY/6OH9Hmtmz4fv6dXwCt/OeV8ys/fCbyQrzeyCXvrs381sXfj4dzMbEs7rLC99lZltNLP1PX2zMbOlZnZm0vNiM9tkZof31p+Sv5TwJWo/IyiQdTjB1bN7E5TLBbiK4EraaoKCWj8gyN8XElxle6YHd3T6eW8NhP8kPkdQuvd1gpIKF4XPPwt8zczO6bLaSQSlgD8NnBi+VhW290KX7VcCTwNPEBQ52w+o6SaOvQlKJPwYGElQrvnBsKxBOfAfwGfcvRI4HljSw1v6IXAsQZ8dRlB6+h+S5u9JcLXq3gSlHG42sxHdbOc37HwF8RnAenfvqV3Jczmf8M3sjnBPpWvRrlS390S4d/Vol9dnh3tVS8LH4eloT3oWDrV8Bfi2u3dWlfwXgjINEJTrHUtQgrfNg9sL9uc84r0sqMC4Cfgngtrqb7v7M+7+ursn3P01grLIJ3VZ93p3j7v79j6081fAh+7+b+7e7O4xd3+pm+X+FnjM3R8L2/4LsIgg0QIkgEPMbKi7r3f3N7rZBgTVSG9w943uXkdQQvjCpPlt4fw2d3+MoJx2d7eIvBs4w8yGhc8vBH7bh/creSrnEz5BHe/T07i9X7DzH0ey77r74eFjSRrblO5VA2XAy/ZRedwnwtch+KzeJaj38p6ZXdvP7a8LS0iPDD/T+wHM7Bgzm2PBXZa2EtTKGd1l3f6UHu6p/G9XE4Av2M7lgD8FjA0rQH4xjGW9BXcIm9LDdvYiKLPc6f3wtU6bu1QS7bYktbuvI6jHc66ZVRHUxkmlsJvkiZxP+O4+l6D29g5mNincU385HNft6Q+ju+3VEBRwkuhtArYT3B2rs77/cHevAAj3lK9y908QFNn6jpmdEq67O1cM3ktQOGycuw8nqARpXZbxHqa701P53+6W+23yvQzcvdzdbwRw9yfDMtNjgbeAX/ewnXUE/zw6jeejks/9dRfBN48vAC+4eyqlmyVP5HzC78GtwBXufiTBOOgtadruT8zsNTP7VedBMMmcsOztr4FfmdkeEIxzm9mnw+m/sqCUrvFRieLO8rj9LaucrJLgxiTNZnY0cP4ulq8jGG7pqb1HgT3N7FvhAdVKM+uu8uTdwJlm9mkLSgGXhgdZ9zGzMWZ2VjiW30IwDNNTKeD7CCp0VpvZaIJjHqme6/8IwW0pryQY05cBLO8SvplVEBzQ+p2ZLSG4nd7YcN7nwzMPuj6e7MOmvw9MIbjv5kjge5l5B9LF9wiGbV60oOzu03w03rx/+LyR4P6mt7j7M+G8XZUl7s3XgRssKAt8HUHZ5x65exNBed/5YXvHdpkfA2YRfAv5EHgHOLmb7awmOD30BwT/RFYT3Cu4IHxcRbCnXk9wTOHrXbcR+jHB2P9rBAehXwlf67fwGMWDwL7AQ6lsQ/JHXtTSseAOPI+6+yHhAaa33X3sbmxvBnC1u3d7y7RdzRcZSMzsOmCyykgPfHm3h+/u24CVFt5txwKH7e52zazzW4IB5/DxW/mJDDhmNpLg1M1bo45FMi/nE76Z3Ufwdf6A8IKSSwlOS7vUzF4F3iD4mtzX7T0H/A44Jdzep8NZ95jZ6wRfkUeT4ldkkXxhZl8hGFZ6PDw5Qga4vBjSERGR3Zfze/giIpIeOV0YavTo0T5x4sSowxARyRsvv/zyJnev7m5eTif8iRMnsmjRoqjDEBHJG2b2fk/zNKQjIjJIKOGLiAwSSvgiIoOEEr6IyCChhC8iMkgo4YuIDBJK+CIig4QSvohIDonNmcPmO2fj7e27XriflPBFRHLIlgd+R8O992JF6b8uVglfRCRHeGsrTS+9RPmnTsjI9pXwRURyRNOSJSSamqj41Kcysn0lfBGRHBGfNx+Kiig7prtbIu8+JXwRkRwRnzePoYcfRmFFRUa2r4QvIpID2uvraX7zzYwN54ASvohITojPfx6A8hMyc8AWlPBFRHJCfN48CquqKD3ooIy1oYQvIhIxd6fx+fmUH388VliYsXaU8EVEItayfDkddZsyOpwDSvgiIpGLz5sHkLELrjop4YuIRCw+fz5D9t+f4jFjMtqOEr6ISIQS27fTtOjljA/ngBK+iEikmhYuxFtbKc/g+fedlPBFRCIUnz8fGzKEsmlHZrwtJXwRkQg1zptP2bRpFJSWZrwtJXwRkYi0rV9P64oVWRnOASV8EZHIxOfPB6Aiw6djdlLCFxGJSOO8+RSNGUPJfvtlpT0lfBGRCHhHB/EXXqD8hBMws6y0qYQvIhKB5qVLSWzdmrXhHID03yW3F2a2CogBHUC7u0/LZvsiIrmicd48MKPsuOOy1mZWE37oZHffFEG7IiI5Iz7/eUoPOYSiESOy1qaGdEREsqwjFmP7q69mvFhaV9lO+A48ZWYvm9ll3S1gZpeZ2SIzW1RXV5fl8EREMi/+wgvQ0UFFFurnJMt2wj/B3acCnwG+YWYndl3A3W9192nuPq26ujrL4YmIZF58/vMUlJcz9LDDstpuVhO+u68Lf24EHgaOzmb7IiJRc3fi8+ZRdtyxWHFxVtvOWsI3s3Izq+ycBk4DlmarfRGRXNC6ahVta9dmfTgHsnuWzhjg4fACgyLgXnd/Iovti4hELj7/eYCs1c9JlrWE7+7vAdkdsBIRyTHxefMonjCeknHjst62TssUEckSb20lvmBBJMM5oIQvIpI1TYuX4E1NkQzngBK+iEjWxOfNg6Iiyo4+JpL2lfBFRLKkcd48yg4/nMKK8kjaV8IXEcmCtvXraVm2jIqTZ0QWgxK+iEgWxObMAaDi5JmRxaCELyKSBY21cyiZOJEhn9g3shiU8EVEMqyjsZH4Sy9RMTO6vXtQwhcRybj4vPnQ1kblzJMjjUMJX0Qkwxrn1FJYVcXQww+PNA4lfBGRDPL2dhqfeZaKk07CiqK4yeBHlPBFRDJo++LFdGzdGvn4PSjhi4hkVKx2DlZcTHlE9XOSKeGLiGSIuxOrraHsuGMju7o2mRK+iEiGtK5cSdv7H1CZA8M5oIQvIpIxsZoaACpmzIg2kJASvohIhjTWzqH04IMp3nPPqEMBlPBFRDKiffNmti9ZQkXEF1slU8IXEcmAxmeeBfecGb8HJXwRkYyIzamlaOxYhkyZEnUoOyjhi4ikWaK5mfj856k8+WTMLOpwdlDCFxFJs/iLL+Lbt+fE1bXJlPBFRNKssXYOBeXllB19VNSh7EQJX0QkjTyRoHHOHMqnT6egpCTqcHaihC8ikkbNb7xBe11d5LXvu5P1hG9mhWa22MwezXbbIiKZFquthcJCKk48MepQPiaKPfwrgWURtCsiknGNNbWUTZ1KYVVV1KF8TFYTvpntA3wWuC2b7YqIZEPrmjW0LF9OxSm5dXZOp2zv4f87cA2QyHK7IiIZ11g7ByCnrq5NlrWEb2Z/BWx095d3sdxlZrbIzBbV1dVlKToRkd0Xm1NLyX6TKBk/PupQupXNPfwTgLPMbBVwPzDTzO7uupC73+ru09x9WnV1dRbDExFJXce2bTQtXETlybm5dw+wyzvqmllf/1VtcfdtPc109+8D3w+3OQO42t3/to/bFhHJaY3PPQft7TlVHbOrvtxC/S7Agd4KQjgwG/hNGmISEck7jbVzKBw1iqGHHhp1KD3aZcJ394/9uzKzPd39w1QbdfdngGdSXV9EJJd4WxuNc+dSedosrLAw6nB6lOoY/kVpjUJEJI81LVxIIhbL2bNzOvVlSKc7Z5tZE/AXd387nQGJiOSbWE0tVlpK+fHHRx1Kr1Ldw/888C7wOTPTRVQiMmi5O7HaWsqPP56CoUOjDqdXKe3hu/sG4InwISIyaLUsW0b7+vVUXv6NqEPZpZT28M3sZjObHU6fltaIRETySKymFsyomDEj6lB2KdUhnVbgvXA6t49SiIhkUKy2lqFHHEHRqFFRh7JLqSb8JmC4mRUDuXkNsYhIhrWtXUvLsmVU5mixtK5SPUunHtgO3AzMT184IiL5I9ZZLO2UUyKOpG/6tYdvZlVmdidwbvjSb4BpaY9KRCQPxGprKJk0iZKJE6MOpU/6tYfv7lvM7EZgIrAJOBR4KANxiYjktM5iaaMuvjjqUPoslSGdS4GV7v4k0GupYxGRgarx2bnQ3p434/eQWsJvAP7ezA4AXgWWuPvi9IYlIpLbYrU1FFaPpjSHi6V11e+E7+4/NbMaYDlwOHAioIQvIoNGorWV+LNzGfbZz2IFUdwaPDX9TvhmdgNQCCwh2Lt/Js0xiYjktKaXXiLR1JSz967tSSp7+NeZ2RjgCOBcM5vk7l9Jf2giIrkpVlODlZVRftxxUYfSL6meh/9V4H/dXbV0RGRQ8USCxto5VJxwAgVDhkQdTr+kmvDvAL5mZuXAPe6+JH0hiYjkruY33qB948a8G86B1EsrfJPgn0UR8B/pC0dEJLfFamqgsJCKk06KOpR+SzXhrwBKgT+4+4lpjEdEJKc11tRSNnUqRSNGRB1Kv6Wa8N8AaoFLzWxhGuMREclZratX0/LOO1Semh+1c7pKdQx/MlAH3EpwIZaIyIAXq6kBoCJPiqV1leoe/hSCi62uBi5LXzgiIrmrsaaWIZMnU7LPPlGHkpJUE34V8D3gGqA5bdGIiOSo9oYGml5+OS/PzumU6pDODcAUd3/bzBLpDEhEJBc1PvssJBJUzszP4Rzo4x6+mRWa2Xoz+zKAu69x96fD6WszGaCISC5orKmlaMwYSg85OOpQUtanhO/uHcBSYFJmwxERyT2J5mYa582jYubJmFnU4aSsP0M6ZcA1ZjYLWBe+5u5+dl9WNrNSYC4wJGz39+7+T/0JVkQkCvEXXsC3b8/r4RzoX8LvrBI0NXwAeD/WbwFmuntjePPzeWb2uLu/2I9tiIhkXWNtLQXl5ZQdc3TUoeyW/iT8fXenIXd3oDF8Whw++vMPQ0Qk6zyRIDbnGcpPnE5BSUnU4eyWPid8d39/dxszs0KC2yLuB9zs7i91s8xlhOf2jx8/fnebFBHZLdtffpmOTZvyfjgHUj8PPyXu3uHuhwP7AEeb2SHdLHOru09z92nV1dXZDE9E5GM233UXhcOH59W9a3sSyb253H0L8AxwehTti4j0RcvKlTTW1DLigvMpKCuLOpzd1u+Eb2ZnptKQmVWbWVU4PRQ4FXgrlW2JiGRD/Z2zsZISRlxwQdShpEUqe/g/SbGtscAcM3sNWAj8xd0fTXFbIiIZ1b5pE1sfeYTh55xD0ahRUYeTFqmUVkjpqgN3f43gPrgiIjmv/u678bY2Rl38pahDSZtU9vB1KqWIDGiJeJyG++6n8tRTKZk4Mepw0iaSg7YiIrlsy4MPkti6lVFfvjTqUNJKCV9EJIm3tbF59myGTjuSoYcdFnU4aZVKwt+Q9ihERHLEtieepH3dekZdMrD27iGFhO/uszIRiIhI1NydzXfcQcmkSVTMOCnqcNJOQzoiIqH488/TsmwZoy65GCsYeOlx4L0jEZEU1d9+B0XV1Qw7M6XrS3NeSgnfzL6TNH1A+sIREYlG85tvEn/+eUZcdGHeV8XsSb8uvApLI/wKmGJmzcBrwKXAxekPTUQkezbfcScFZWWM+OIXow4lY/qV8MOiZxeb2WeBD4HTgIcyEJeISNa0rV3LtscfZ+RFF1E4bFjU4WRMqmP4JxGcnnksoLN2RCSvbb7rLjBj5EUXRh1KRqWa8KuA7wHXAM1pi0ZEJMs6tmxhy+8fZPhnP0vx2LFRh5NRqRRPA7gBmOLub5tZIp0BiYhkU8P99+NNTYy85JKoQ8m4lBK+u68B1oTT16Y1IhGRLEm0tFB/9z2UT59O6QGTow4n41I9LfNmM5sdTp+W1ohERLJk26OP0rFpE6MuHXhlFLqT6hh+K/BeOJ3/N3oUkUFp22OPUzJhAmXHHB11KFmRasJvAoabWTEwPo3xiIhkRUcsRnzBAipOOQWzlO7rlHdSPWhbD2wHbgbmpy8cEZHsiD/3HLS1UXnK4Bmk6NcevplVmdmdwLnhS78BpqU9KhGRDIvV1FI4ciRDDz886lCypt9X2prZjcBEYBNwKLrSVkTyjLe10Th3LpWnzcIKC6MOJ2tSGdK5FFjp7k8CL6c5HhGRjGtauJBELEblKadEHUpWpZLwG4C/D6tkvgoscffF6Q1LRCRzYk/XYKWllB93XNShZFW/E767/9TMaoDlwOHAiYASvojkBXcnNmcO5SecQMHQoVGHk1X9TvhmdgNQCCwh2Lt/Js0xiYhkTPObb9K+fj2Vl18edShZl8o9ba8DWsJ1zzWzX6c9KhGRDGmsqYWCAipOnhF1KFmX6oVXdwAHAqOAW9IXjohIZsVqaxk69QiKRo6MOpSsSzXhf5NgOKgIuKkvK5jZODObY2bLzOwNM7syxbZFRFLSumYtLW+9ReXMwXV2TqdUE/4KoBT4g7uf2Md12oGr3P1AghunfMPMDkqxfRGRfmusrQUYVFfXJks14b8B1AKXmtnCvqzg7uvd/ZVwOgYsA/ZOsX0RkX6L1dRQst8kSiZMiDqUSKSa8CcRDOfcSgo3MDezicARwEvdzLvMzBaZ2aK6uroUwxMR2VnHli00LVo0aIdzIPWEv9rd/wi8S7Cn3mdmVgE8CHzL3bd1ne/ut7r7NHefVl1dnWJ4IiI7a5w7Fzo6Bu1wDqSe8E83s32A/wF+1deVwnLKDwL3uLtq8IhI1sRqaimqrqb0k5+MOpTIpOMm5i19WcGCgtO3A8vc/Zcptisi0m+J1lbizz1HxcyZWEGqaS//pfrObyA4Q+dtoKOP65wAXAjMNLMl4eOMFNsXEemzphdfJNHUNKiHc6CPpRXMrJDgpuX/6O63pXITc3efBwyO28qISE6J1dRSUFZG2bHHRh1KpPq0h+/uHcBSgrNzRETyhicSxGprKJ8+nYKSkqjDiVR/iqeVAdeY2SxgXfiau/vZ6Q9LRCQ9ml9/nY66TYN+OAf6l/A7C0dPDR8Ant5wRETSK1ZTC4WFVJzY16IAA1d/Ev6+GYtCRCRDYrU1lE2bRmFVVdShRG6XCd/MxoeT3e7NJ83f0t2FVCIiUWl9/31a313BiPO+GHUoOaEve/h3EST73s6wcWA28Js0xCQikhaxmsFdLK2rXSZ8dz85G4GIiKRbrKaGIVOmULy36jRC6hdeiYjktPb6erYvXkzlTO3dd1LCF5EBqXHOM5BIUKHhnB2U8EVkwPGODrb8/vcUjR1L6UG6z1InJXwRGXA2/ff/sH3xYqqvuIKgbqOAEr6IDDDxF19i0803M/zssxj+uXOiDienKOGLyIDRvmkTa797NSUTJ7Lndddp776L/lxpKyKSszyRYN013yOxLcb4226joLw86pByjvbwRWRA2Hzrr4k//zxjfvADSg84IOpwcpISvojkvaZFi6j7j/9g2BlnUHXeF6IOJ2cp4YtIXmtvaGDtVVdTPG4f9rzhRxq374XG8EUkb3kiwbprr6Wjvp4J999HYUVF1CHlNO3hi0jeqr9zNvFn57LH977H0IMPjjqcnKeELyJ5afuSJWz81a+onDWLERecH3U4eUEJX0TyTsfWraz5zncoHjOGsT/5scbt+0hj+CKSV9yddT/4Ie11m5h4z90UDhsWdUh5Q3v4IpJXNv/vrTTW1DDm6qsYeuihUYeTV5TwRSRvND73HHU33cSwM85gxEUXRR1O3lHCF5G80Lp6NWuv/i5DJk9m7I//WeP2KVDCF5Gcl2hqYs3lVwCwz3/9JwVlZRFHlJ+ylvDN7A4z22hmS7PVpojkP3dn/T9eR8vy5ez9r7+gZNy4qEPKW9ncw58NnJ7F9kRkAKi/6y62/fnPVF95JRXTp0cdTl7LWsJ397lAfbbaE5H8F3/xJTb+4l+pnHUqo756WdTh5L2cG8M3s8vMbJGZLaqrq4s6HBGJSNu6daz99rcpmTiRsT+9UQdp0yDnEr673+ru09x9WnV1ddThiEgEEi0trPnmlXhbG/v8539SWKGbmaSDrrQVkZzi7nz4oxtoXrqUfW65mSGf2DfqkAaMnNvDF5HBbcv997P1oYcY/fWvUTlzZtThDChZ28M3s/uAGcBoM1sD/JO7356t9kUktzW/vZz6O+9k65/+RPlJJzL68sujDinr4vE4GzdupKmpiYMzUO45awnf3f8mW22JSH5wd5peeIHNd9xJfN48rKyMEeefT/U3r8AKBu4ARFtbG5s2bWLDhg1s2LCBjRs3smHDBhobGwEYMmQIBx10UNoPVGsMX0Syztva2Pb442y+405a3nqLwurRVH/724z44nkUVlVFHV7aNTQ0sHLlSlatWsW6devYvHkz7g5AYWEhe+yxB5MmTWLMmDHssccejBkzJiNxKOGLSNZ0xGJseeB31P/2t7R/+CElkyYx9ic/ZtiZZ1JQUhJ1eGmzbds2Vq5cuSPJb9myBYDy8nL22WcfDjrooB3JfeTIkRQWFmYlLiV8EcmK2NNPs+7a75NobKTsmGMY+6PrKZ8+PW+Hbtrb22lqaiIej9PU1EQsFmP16tWsWrWKzZs3A1BaWsq+++7Lcccdx7777kt1dXWk1xMo4YtIxjXOncuab3+H0gMPZM9//EeGfvKQqEPqVUtLC/X19TseDQ0NOxJ7PB4nHo/T0tLysfVKSkqYMGECRx55JPvuuy9jxoyhIIf+oSnhi0hGxV98kTVXfJPS/fdn/G2/ztodqtra2ojFYiQSCTo6Onr82TW519fXE4/Hd9pWeXk5FRUVlJWVsddee1FWVkZ5efnHfmZzeCYVSvgikjFNr7zC6q9/g5Lx4xl3+20ZT/Zbt27lnXfeYfny5bz33nu0t7f3ed1hw4YxcuRIDjjgAEaOHLnjMWLECIYMGZLBqLNHCV9EMmL760tZfdlXKd5jD8bfcTtFI0akvY1EIsHatWtZvnw5y5cvZ8OGDQBUVVUxdepUxo4dS2FhIYWFhRQUFHT7s6SkhKqqKkoG0EHjnijhi0jaNb/9Nh98+csUVlUxfvadFO2iLlZHRwfbtm2joaGBrVu3kkgkel0+kUiwZs0a3nnnHZqamjAzxo8fz6xZs9h///0jPziaq5TwRWS3tbW1UV8fVD9vW7OGdd//PjZqFGNv/Cn1ZhDuebe3t7NlyxYaGhp2evQlyXc1dOhQ9ttvPyZPnsykSZMo012wdkkJX0RSVl9fz8KFC1m8eDHNzc0fzTj++ODnQw/1uG5ZWRkjRoxgr7324uCDD2bEiBGMGDGCqqqqPh34rKioyOkDpLlICV9E+iWRSPDuu++yYMEC3n33XQoKCpgyZQqT99yTzf91M97SwugrLqd47NiPrVtYWEhVVRVVVVWUlpZGEP3gpoQvIn3S1NTE4sWLWbRoEQ0NDVRUVHDSSSdx5JFHMrS5mfcvvJCh9Q2Mn30nQzNQ+Et2nxK+SJZs2LCBhoaGqMPot0QiwfLly1m6dCnt7e1MmDCBU045hQMPPJDCwkKaly/n/a99nfaGBsbffpuSfQ5TwhfJMHfnhRde4Kmnnoo6lJQVFxdz2GGHcfTRR+9U2Cv2zDOs+85VFJSXM+Gu2Qz95CcjjFJ2RQlfJIPa29t57LHHeOWVVzjwwAOZPn16Xp4uOGLEiJ3G3N2d+rvuYuPPf8GQKQcw7pZbKN5zzwgjlL5QwhfJkKamJh544AFWrVrF9OnTOfnkk3OqrkqqvLWVD//5x2z53e+onDWLvX52IwU6JTIvKOGLZEBdXR333nsv27Zt43Of+xyHHXZY1CGlRXtDA2uv/BZNCxYw6qtfpfrKb+ZttcvBSAlfJM1WrFjBAw88QFFREV/60pcYN25c1CGlRct777H6a1+jfd169vr5zxh+1llRhyT9pIQvkkYLFizg8ccfp7q6mvPPP5+qAXL3psb581n7rW9jJSWM/81dlB1xRNQhSQqU8EXSoKOjgyeeeIKFCxcyefJkzj333AFRYTGxfTv1d99N3b/fxJBJkxj337dQvPfeUYclKVLCl5zg7nzwwQe89dZbdHR07HLZXPPhhx+yevVqjj/+eE499dS8PzjbXl9Pwz330nDPPXRs2ULFzJns9fOfU1hRHnVoshuU8CVSra2tvP766yxYsIANGzbsKFebb4qKijjrrLOYOnVq1KHsltbVq6m/czZbHnoIb26mYuZMRn35Usry/H1JQAlfIrF58+YdRbdaWloYM2YMZ555Jp/85CfzMuHnu+1L32Dz7bcRe/IpKCxk+FlnMuqSSxgyaVLUoUkaKeFL1iQSCd555x0WLFjAihUrKCgo4KCDDuKoo45i/PjxeXlBUhQ6tm6ledlbWEkJBaVDsNJSCkpLg59DgueWVEXS29pItLTg27eTaG4msX073txMYnszHfWbafi/B2h68UUKKioYdcnFjLjwIorH7BHhO5RMUcLPY4lEgng8TiwWY9u2bcRisR3TTU1NOTfWXVdXx5YtW6isrGTGjBkceeSRVFZWRh1WXvCODuLPP8/Whx8m9nQN3tra+wrFxRQUF5NobYVd3OavaI892OO7V1N13nkU6vMY0JTwI9DW1kZjYyPxeJzGxsYdj3g8TmtrK+5OIpEgkUh0O93S0kIsFqOxsfFjN40wMyoqKigvL0/bHnO6tjN69GhmzZrFlClTVMe8j1pWrGDrI4+w9Q9/pH3jRgqHD6fqvPOoOOkkwEk0N+PNLSSat+PNLXhLM4nwp7e2YkNKKRhaipUODb8NDA2fl1JQOpSCsqEMmTKFAg2jDQpZTfhmdjpwE1AI3ObuN2az/Wxyd7Zu3cratWtZt24d69atY9u2bTQ2NtLS0tLtOqWlpQwZMgQzo6CgYMcj+bmZMWTIEEaPHs2wYcOorKyksrJyx3RFRUXenyEy2HVs3cq2xx9ny8MP0/zqa1BYSMWJJzL8H35IxYwZSs6SsqwlfDMrBG4GZgFrgIVm9kd3fzNbMWRSU1MT69atY+3atTse8XgcCG76MGbMGPbcc0/Ky8upqKjY8eh8Xl5eTlFR7x+Hu0MiAeHePokEhD/dAU/gsRgd7n0bznEn0bSdRLyRRDxOojH42dHY+TxOIh6HRO+nSaabFRdjJSVJP0t2fr7TdHGQAIuDn8nzKSwMLvs3I0EHHYk4HYkmOryJ9sR2Eh1xErSBWfjoQ3BhP9ORwBMJPOHh8w464k1d+rKRRGMTHY2xsC8bYVennALt6z/E29spHjuWss+dTflR0ygYVkkzTvPWOenoYslxBVbC6NEnp3272dzDPxp4193fAzCz+4GzgbQn/P+84JJdnsudacVAVdLzpjfepSmiWCRqBUBl+OiLfYJ/Ph8Cj6yHR/6UscgkNxUWFnLFPelP+Nn87r83sDrp+ZrwtZ2Y2WVmtsjMFtXV1aXWUm4dqxQR6Z8M5bBs7uF394X5Y2/L3W8FbgWYNm1aSm/7invvSGU1EZEBLZt7+GuA5LKB+wDrsti+iMigls2EvxDY38z2NbMS4K+BP2axfRGRQS1rQzru3m5mlwNPEpyWeYe7v5Gt9kVEBrusnofv7o8Bj2WzTRERCegKHRGRQUIJX0RkkFDCFxEZJJTwRUQGCcu1ErrJzKwOeD/F1UcDm9IYTqYozvTKhzjzIUZQnOmWrTgnuHt1dzNyOuHvDjNb5O7Too5jVxRneuVDnPkQIyjOdMuFODWkIyIySCjhi4gMEgM54d8adQB9pDjTKx/izIcYQXGmW+RxDtgxfBER2dlA3sMXEZEkSvgiIoPEgEv4Zna6mb1tZu+a2bVRx5PMzFaZ2etmtsTMFoWvjTSzv5jZO+HPERHEdYeZbTSzpUmv9RiXmX0/7N+3zezTEcd5vZmtDft0iZmdkQNxjjOzOWa2zMzeMLMrw9dzqk97iTOn+tTMSs1sgZm9Gsb5o/D1nOnPXmLMqb7EwxteD4QHQdnlFcAngBLgVeCgqONKim8VMLrLaz8Hrg2nrwV+FkFcJwJTgaW7igs4KOzXIcC+YX8XRhjn9cDV3SwbZZxjganhdCWwPIwnp/q0lzhzqk8J7pZXEU4XAy8Bx+ZSf/YSY0715UDbw99xo3R3bwU6b5Sey84G7gqn7wLOyXYA7j4XqO/yck9xnQ3c7+4t7r4SeJeg36OKsydRxrne3V8Jp2PAMoL7N+dUn/YSZ0+iitPdvTF8Whw+nBzqz15i7EkkfTnQEn6fbpQeIQeeMrOXzeyy8LUx7r4egj9AYI/IottZT3HlYh9fbmavhUM+nV/rcyJOM5sIHEGwx5ezfdolTsixPjWzQjNbAmwE/uLuOdefPcQIOdSXAy3h9+lG6RE6wd2nAp8BvmFmJ0YdUApyrY//G5gEHA6sB/4tfD3yOM2sAngQ+Ja7b+tt0W5ey1qs3cSZc33q7h3ufjjBvbCPNrNDelk8kjh7iDGn+nKgJfycvlG6u68Lf24EHib4CrfBzMYChD83RhfhTnqKK6f62N03hH9oCeDXfPS1ONI4zayYIIne4+4PhS/nXJ92F2eu9mkY2xbgGeB0crA/u8aYa3050BJ+zt4o3czKzayycxo4DVhKEN/fhYv9HfCHaCL8mJ7i+iPw12Y2xMz2BfYHFkQQH7DjD73T5wj6FCKM08wMuB1Y5u6/TJqVU33aU5y51qdmVm1mVeH0UOBU4C1yqD97ijHX+jKjR4SjeABnEJxtsAL4YdTxJMX1CYKj8q8Cb3TGBowCaoB3wp8jI4jtPoKvm20Eex6X9hYX8MOwf98GPhNxnL8FXgdeI/gjGpsDcX6K4Ov5a8CS8HFGrvVpL3HmVJ8ChwKLw3iWAteFr+dMf/YSY071pUoriIgMEgNtSEdERHqghC8iMkgo4YuIDBJK+CIig4QSvojIIKGEL4OCmVWZ2deTnu9lZr/PUFvnmNl1PcxrDH9Wm9kTmWhfpCdK+DJYVAE7Er67r3P3/5ehtq4BbultAXevA9ab2QkZikHkY5TwZbC4EZgU1iT/hZlNtLCuvpl9ycweMbM/mdlKM7vczL5jZovN7EUzGxkuN8nMngiL3z1nZlO6NmJmk4EWd98UPt/XzF4ws4Vm9s9dFn8EuCCj71okiRK+DBbXAivc/XB3/2438w8BzieodfIToMndjwBeAC4Kl7kVuMLdjwSupvu9+BOAV5Ke3wT8t7sfBXzYZdlFwPQU349IvxVFHYBIjpjjQU34mJltBf4Uvv46cGhYUfJ44HdBCRoguHlFV2OBuqTnJwDnhtO/BX6WNG8jsFd6whfZNSV8kUBL0nQi6XmC4O+kANjiQfnb3mwHhnd5raf6JaXh8iJZoSEdGSxiBLfxS4kHdeJXmtkXIKg0aWaHdbPoMmC/pOfzCaq2wsfH6yfzUfVEkYxTwpdBwd03A/PNbKmZ/SLFzVwAXGpmnRVPu7t95lzgCPto3OdKgpvdLOTje/4nA39OMRaRflO1TJE0M7ObgD+5+9O7WG4ucLa7N2QnMhnstIcvkn7/ApT1toCZVQO/VLKXbNIevojIIKE9fBGRQUIJX0RkkFDCFxEZJJTwRUQGCSV8EZFB4v8DLEpqjFZh108AAAAASUVORK5CYII=\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "swiftdiff['rmag'].sel(id=tpidx).plot.line(ax=ax, x=\"time (d)\")\n", - "ax.set_ylabel(\"$|\\mathbf{r}_{swiftest} - \\mathbf{r}_{swifter}|$\")\n", - "ax.set_title(\"Heliocentric position differences \\n Test Particles only\")\n", - "legend = ax.legend()\n", - "legend.remove()\n", - "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-testparticles-rmag.png\", facecolor='white', transparent=False, dpi=300)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No handles with labels found to put in legend.\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAElCAYAAAD3KtVsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA1I0lEQVR4nO3deZwcZbn3/8+3Z89MSMhKyAoh7E9YjCwPCMQjEDjyQ44biCgKRBAUZVFcDigeD7ig6HNABIwBZDlyBEQPAookbC6ZAQIzgUBIIMskmezJ7L1cvz+qJjSTnpmezvQ2c71fr3p1ddVdVdfUzPTV931X3SUzwznnnOtLJN8BOOecKw6eMJxzzqXFE4Zzzrm0eMJwzjmXFk8Yzjnn0uIJwznnXFo8Ybh+k/QdSb8J56dIapZUku+4eiPpA5KW5viYJmm/3dxHg6STBiaiXfbd4+9R0nhJz0jaIekmBX4taYukf2YjHlf4PGEMQZLelvShbsvOl/Rcf/dlZivNrMbM4gMXYf+k88FsZs+a2QG5immgmNkhZrYA3vsBn4XjdP89zgU2AnuY2ZXA8cDJwCQzOyobMbjC5wnDDXqSSvMdQxGaCiyxd+/snQq8bWYt/d2Rn//BwxOGS0nS3pJ+J2mDpBWSvtxDuWnhN/zSpO0elbRZ0jJJFyWVLZH0TUlvhU0ddZImh+sOlPTncLulkj6RtN18SbdI+t9wu39Imh6ueyYstjhsUvmkpJMkrZb0dUnrgF93LUva52RJD4U/3yZJ/9XDOWiTNCpp2RGSNkoqC99/XtJrYVPNE5Km9nCeRki6OzzeO5K+LSmStP6icD87JC2RdGS4/G1JH5I0B/gm8Mnw51ws6eOS6rod50pJj/QQwz6SFobH+DMwJtXvUdJ84LPA18JjfQG4Ezg2fP/dcJsPS3pZ0lZJL0iambS/t8Pz/wrQEu73mLDc1jD+k5LKL5D0PUnPh/E9KSk5vuOTtl0l6fxweYWkH0taKWm9pNskVYXrxkj6Y7jNZknPJp9zlwEz82mITcDbwIe6LTsfeC6cjwB1wLVAObAvsBw4NVz/HeA34fw0wIDS8P1C4FagEjgc2AD8S7juauBV4ABAwGHAaKAaWAV8DigFjiRoDjkk3G4+sBk4Klx/L/BAUuwG7Jf0/iQgBvwAqACqwmWrw/UlwGLgp+GxK4HjezhXfwUuSnr/I+C2cP4jwDLgoDCubwMvpIoLuBv4PTA8PGdvABeE6z4OrAHeH56X/YCp3X9Xyec9fF8RnpeDkpa9BHy0h5/lb8BPwu1OAHb08nucD/xHqr+P8P2RQBNwdHg+PxvGWpEU98vA5PD8TwQ2AacT/H2dHL4fG5ZfALwF7B+WXwDcGK6bEsZ6DlBG8DdzeLjuZuBRYFR4bv8A3BCuuwG4LdymDPgAoHz//xXzlPcAfMrDLz34Z24GtiZNrbybMI4GVnbb5hvAr8P5nR9cyR804YdDHBietN0NwPxwfilwZop4Pgk8223ZL4Hrwvn5wJ1J604HXk96nyphdAKV3ZZ1JYxjCRJZaRrn6kLgr+G8CBLbCeH7PxF+6IfvI+F5nJocF8EHagdwcFLZLwALwvkngMt7+V2lTBjhsl8A3w/nDwG2EH5odys3hSCJVictuy/V7zHpnPeWMH4BfK/bMZYCJybF/fmkdV8H7ulW/gngs+H8AuDbSeu+CDye9Lf3cIqfSUALMD1p2bHAinD+eoIkvV/3bX3KbPLq2dD1ETMb2TUR/IN2mQrsHVblt0raStAcMr6Pfe4NbDazHUnL3iH4dglBQnkrxXZTgaO7He9cYK+kMuuS5luBmj5i2WBm7T2smwy8Y2axPvYB8D8ETTF7E3wrN+DZpLh/lhTzZoIPsYnd9jGGoKb2TtKydM5LOu4CPiVJwHnAb82sI0W5vYEt9t4+iHdSlEvXVODKbr+zyeFxuqzqVv7j3cofD0xIKtPT77in8zMWGAbUJe3z8XA5BLXBZcCTkpZLuqb/P6ZL5p1RLpVVBN/SZvRzu0ZglKThSUljCkFzS9d+pwP1KY630MxOzjTgFHobhnkVMEVSaV9Jw8y2SnoS+ARB09P9Fn59DffzfTO7t49YNgJRwo7kcFmq89KXXX4mM/u7pE6C5pZPhVMqa4E9JVUnJY0pqfaZpq6f/ftpxruKoIZxUU+F+zhWqiuzNgJtBE2Xa7qvDP8GryRIbIcAT0taZGZPZRCDwzu9XWr/BLaHnZZVCjqrD5X0/t42MrNVwAvADZIqw07QCwj6HCDoOP2epBkKzJQ0GvgjsL+k8ySVhdP7JR2UZrzrCfpZ+vPzrQVulFQdxnpcL+XvAz4DfDSc73Ib8I3ww6irY/vj3Te24FLV3wLflzRcQcf4FUDXJbJ3AldJel94XvZT6s7z9cC0FB23dwP/BcTMLOWl0Wb2DlALfFdSuaTjgTN6+Zn7cgdwsaSjw5irJf2rpOE9lP8NcIakU8O/p0oFFyJMSuNY9wIfkvSJsPN8tKTDzSwRxvFTSeMAJE2UdGo4/+HwXArYTtBcmrfLvwcDTxhuF+EH3BkEndYrCL7J3QmMSGPzcwjawxuBhwn6If4crvsJwQfnkwT/wL8CqsJvgqcAZ4fbrePdDut0fAe4K2yW+ERfhZN+vv2AlcBqgn6UnjwKzADWm9nipP08HMb5gKTtBDWn03rYx5cI2tuXA88RJJ554X4eBL4fLtsBPELQidvdg+HrJkkvJi2/Bzg0fO3Npwj6pzYD1xEkmoyYWS1wEUGi2kLQ9HN+L+VXAWcSNG1uIKg1XE0an0FmtpKg3+rKMPaXCS6YgKBvZBnw9/B38BeCiyog+J39haC/7m/ArRbe0+Iyo3dr1865YhReRtoEHGlmb+Y7Hjd4eQ3DueJ3CbDIk4XLNu/0dq6ISXqb4Mqsj+Q3EjcUeJOUc865tHiTlHPOubR4wnAuDySdG97f0Ve5rI1QmwkF43r9R77jcPnhCcMVPL37rIauySS1JL3/QAb73GWI927rT5KUCPe/Q8GAiJ/LMP73DNAIYGb3mtkpmezPuXzxTm9X8MLr8HcOBSLJgMPMbFmWD91oZpPCG7/OBP5H0j/MbElfG3aRD+3tBhGvYbiipgyGt5Z0D8GwGH8IaxBf6+0YFniE4Aa1g8M7ml+StF3BUNvfSYqnqzZxgaSVBKPddg3BvjU83rHq9sAqSYfo3eHd10v6Zg8/b29DhJ+vYMykHQqGpD+3l3N2s6TGcLpZUkW4rmto+CslNUla21PNSlK9pDOS3pcpGPr98N7OpytenjBcsfsBwZDYhxPcuT2RYFh2CO4MXk0wGN14gruMzczOI7jD+wwLnjL3w94OECaZs4CRBMOztxAMFTIS+FfgEkkf6bbZiQRjT51KMGghwMjweH/rtv/hBHckP04weN9+wC7jHUmaCPwv8B8Ed4JfBfxO0lhJ1cDPgdPMbDjwfwnuiE7lW8AxBOfsMIJxmr6dtH4vgrv6JxIM7XKLpD1T7Odu4NNJ708H1ppZT8d1RW7QJwxJ88JvSt0HvMt0f4+H3+7+2G25JH1f0hsKHoST8oFDbuCETUUXAV81s65Rcv+TYIgRCAb8m0Aw3HjUgse09uc68r0VjIC6kWAojfPMbKmZLTCzV80sYWavAPcTJIhk3zGzFjNrS+M4HwbWmdlNZtZuZjvM7B8pyn0aeMzMHguP/WeC8aFOD9cngEMlVZnZWjNr6OF45wLXm1mTmW0Avksw0m2XaLg+amaPEQytkerxtr8BTpe0R/j+PPoensQVsUGfMAjG9Z8zgPv7Ee/95+pyPsEwzAea2UHAAwN4TJdatoe3bgyHfx9lZoeb2QMACgbce1rB0/O2AReT9PS60Kpd9tazdIc373GI8HAE2k+GsaxV8HTCA3vYz97sOtR68rDkm7qN4ptyOHkzawSeBz4qaSTBOFp9jdzritigTxhm9gzBgGU7SZoe1hTqwnbtnv6xUu3vKYIB4rq7hOBbWSIs17Q7cbu0JA9v3fVsjxFmVgPB8NZmdqWZ7Usw2OAVkv4l3HZ37li9j2BAwslmNoJg1Fp1K2M9zKeS7vDmXUOEj0yaqs3sRgAzeyIcIn4C8DrBSK6pNBIkny5TwmWZuIug5vNx4G+phhl3g8egTxg9uB34kpm9j6Ad+NYB2Od0guct10r6k6T+PkvC9dNuDm/d3yHRkw0neFBUu6Sj6PkZFF02EDQX9XS8PwJ7SfpK2CE9XNLRKcr1OES4pPGS/r+wL6ODoBmpp6G87we+HfZ9jCHo88n0Xo9HCB7Xejm7MfqtKw5DLmFIqiHoEHxQ0ssEjwKdEK77t/DKj+7TE2nsugJoN7NZBB9i87L0I7j3ynR46xsIPjS3Srqqn8f8InC9pB0EH7a/7a2wmbUSDF/+fHi8Y7qt30HwjOszCIZ2fxOYnWI/vQ0RHiHo5G8kqFGfyHufopjsPwj6Pl4h6MR/MVzWb2Efze+AfYCHMtmHKx5DYiwpSdOAP5rZoWEH3VIzm9DHZr3t7yTgKjP7cNKy14E5ZvZ2+I12a9hc4dygJulaYH8z+3SfhV1RG3I1DDPbDqxQ+GS08Oqmw/rYLB2PAB8M508E3hiAfTpX0CSNIrj09vZ8x+Kyb9AnDEn3EzRHHBDekHQBwWWFF0haDDQQVPPT3d+zBE8++5dwf6eGq24kuFrkVYLmjgsH8udwrtBIuoigWexP4cUlbpAbEk1Szjnndt+gr2E455wbGIN6YLQxY8bYtGnT8h2Gc84Vjbq6uo1mNjbVukGdMKZNm0ZtbW2+w3DOuaIh6Z2e1nmTlHPOubR4wnDOOZcWTxjOOefS4gnDOedcWjxhOOecS0vOrpKSNI/gQTFNZnZoivVXE9yB3RXXQcBYM9ss6W2CIcXjQCwc4M8551wO5bKGMZ9eHmRkZj8KH1JzOPANYKGZJT/HYna43pOFc87lQc4SRqoHGfXiHIIx+51zzvXDjr8+zaZfzSMbwz4VXB+GpGEENZHfJS02gsds1kma28f2c8OHGNVu2LAhm6E651zB2fboo2y5/36CpywMrIJLGAQPkXm+W3PUcWZ2JMEzgy+VdEJPG5vZ7WY2y8xmjR2b8u5255wbtNobGqg8dJdu4gFRiAnjbLo1R4UPm+96TvbDwFF5iMs55wpafOtWoqtWUXnIwVnZf0ElDEkjCB4+9PukZdWShnfNA6cA9fmJ0DnnCldbQwMAVVmqYeTystr7gZOAMZJWA9cBZQBmdltY7CzgSTNrSdp0PPBw2B5XCtxnZo/nKm7nnCsW7Q1LAKg8ODs1jJwlDDM7J40y8wkuv01ethwYiEeoOufcoNZeX0/ZlCmUjBiRlf0XVJOUc865zLXX11N16CFZ278nDOecGwRiW7YQbWyk8hBPGM4553rRXh90eFcekp0Ob/CE4Zxzg0J7Q3DxaLYuqQVPGM45Nyi0NzRQPnUqJcOHZ+0YnjCcc24QaKvP3h3eXTxhOOdckYtt2kRs7VpPGM4553rX3tDV4Z29/gvwhOGcc0Wvrb4epKzd4d3FE4ZzzhW59voGyqdNo6SmJqvH8YThnHNFLptDmifzhOGcc0Us2tREbP36rA4J0sUThnPOFbF3O7w9YTjnnOtFe8OSoMP7oIOyfixPGM45V8Ta6+spn74vkerqrB/LE4ZzzhWxtoZ6qnLQHAWeMJxzrmhF1zcR37AxqyPUJvOE4ZxzRWrnCLU5uKQWPGE451zRaq+vh0iEyoMOzMnxcpYwJM2T1CSpvof1J0naJunlcLo2ad0cSUslLZN0Ta5ids65QtbW0EDF9OlEqqpycrxc1jDmA3P6KPOsmR0eTtcDSCoBbgFOAw4GzpGU3QFTnHOuwJkZ7TkY0jxZzhKGmT0DbM5g06OAZWa23Mw6gQeAMwc0OOecKzKxdeuIb9qUkxv2uhRaH8axkhZL+pOkrrMwEViVVGZ1uMw554asrju8czEkSJfSnB2pby8CU82sWdLpwCPADEApylpPO5E0F5gLMGXKlCyE6Zxz+ddWXw8lJVQcmJsObyigGoaZbTez5nD+MaBM0hiCGsXkpKKTgMZe9nO7mc0ys1ljx47NaszOOZcv7fUNVOy3H5HKypwds2AShqS9JCmcP4ogtk3AImCGpH0klQNnA4/mL1LnnMsvMwuHNM9dcxTksElK0v3AScAYSauB64AyADO7DfgYcImkGNAGnG1mBsQkXQY8AZQA88ysIVdxO+dcoYk1NhLfsiWnHd6Qw4RhZuf0sf6/gP/qYd1jwGPZiMs554pNW31Xh3fuLqmFAmqScs45l572hgYoLaXigANyelxPGM45V2Ta6+upmDGDSEVFTo/rCcM554qImdHW0JDT+y+6eMJwzrkiEl2zhsS2bTkb0jyZJwznnCsi7fXhkOY5vkIKPGE451xRaa+vh7IyKg7YP+fH9oThnHNFpK2hgcoZM4iUl+f82J4wnHOuSORjSPNknjCcc65IRFeuJLFjR86HBOniCcM554pE15Dm+ejwBk8YzjlXNNrqG1BZGZUzZuTl+J4wnHOuSLTX11Nx4IEoDx3e4AnDOeeKgkWjtL36KlUzZ+YtBk8YzjlXBNpfew1ra2PYrPflLQZPGM45VwRaa+sAqDrSE4ZzzrletNbVUTZ5MmXjx+UtBk8YzjlX4CyRoK2ujmHvy1/tAjxhOOdcwetcvpz41q157b8ATxjOOVfwWuteBKDKaxjOOed601pXS8no0ZRPm5bXOHKWMCTNk9Qkqb6H9edKeiWcXpB0WNK6tyW9KullSbW5itk55wpBW23QfyEpr3HksoYxH5jTy/oVwIlmNhP4HnB7t/WzzexwM5uVpficc67gRNeuJdrYmPf+C4DSXB3IzJ6RNK2X9S8kvf07MCnrQTnnXIHbef9FnvsvoHD7MC4A/pT03oAnJdVJmtvbhpLmSqqVVLthw4asBumcc9nWWldLpLqaygMPzHcouathpEvSbIKEcXzS4uPMrFHSOODPkl43s2dSbW9mtxM2Z82aNcuyHrBzzmVRW10dVUccgUpK8h1K3wlD0pQ097XVzLbvTjCSZgJ3AqeZ2aau5WbWGL42SXoYOApImTCcc26wiG3ZQseby9jj9NPzHQqQXg3jLoImod66542gU/vuTAMJE9NDwHlm9kbS8mogYmY7wvlTgOszPY5zzhWLtpdeAgqj/wLSSBhmNrv7Mkl7mdm6/hxI0v3AScAYSauB64Cy8Bi3AdcCo4Fbw0vHYuEVUeOBh8NlpcB9ZvZ4f47tnHPFqLW2DsrK8jqkebJM+zA+A/ywPxuY2Tl9rL8QuDDF8uXAYbtu4Zxzg1trXS1Vhx5KpLIy36EAmV8ldaakyyQdMKDROOecAyDR1kZ7w5KCuP+iS6YJ49+AZcBZku4cwHicc84BbYtfgVisYPovIMMmKTNbDzweTs455wZYa10tSAw78sh8h7JTRjUMSbdImh/OnzKgETnnnKOtro6K/fenZI898h3KTpk2SXUCy8P5Dw5QLM455wCLxWh9eXHeH5jUXaYJoxUYIakMSPfGPuecc2lof+01rLW1oDq8IfPLajcDbcAtwPMDF45zzrl3BxwsrMG5+1XDkDRS0q+Bj4aL7gYK6ydyzrki11pXS9nkyZSNH5fvUN6jXzUMM9sq6UZgGrARmEkwnIdzzrkBYGa01b1IzQkn5DuUXWTSJHUBsMLMngDqBjge55wb0jqXLye+ZQtVBdZ/AZkljC3AxeFd3ouBl83spYENyznnhqau/othBdZ/ARkkDDO7QdJTwBvA4cAJgCcM55wbAG0v1lEyejTl+0zLdyi76HfCkHQ9UAK8TFC7WDDAMTnn3JDVWlvHsCOPJByhu6D0+z4MM7sW6Ai3/aikOwY8KuecG4Ki69YRXbOm4O6/6JLpjXvzgIMIn18xcOE459zQVaj3X3TJNGF8maA5qxT42cCF45xzQ1drXS2RYcOoPLAwnxyRacJ4C6gEfm9mhXexsHPOFaG22jqqjjgClWY6CEd2ZZowGoC/AhdIWjSA8Tjn3JAU37qVjjffLNj+C8h8LKnpBPdj3B6+Ouec2w2tLwZ3JxTSA5O6y7SGscrMHiV46t5r6WwgaZ6kJkn1PayXpJ9LWibpFUlHJq2bI2lpuO6aDGN2zrmC1VpXC2VlVM2cme9QepRpwpgjaRJwG/DTNLeZD8zpZf1pwIxwmgv8AkBSCcGouKcBBwPnSDo4s7Cdc64wtdXWUXXIIUQqK/MdSo8yTRgjga8DXyO4J6NPZvYMwbDoPTkTuNsCfwdGSpoAHAUsM7PlZtYJPBCWdc65QSHR2krbkiUF3X8BmSeM6wmukFoKxAcolonAqqT3q8NlPS1PSdJcSbWSajds2DBAoTnnXPa0/P3vEI1Sfdxx+Q6lV2knDEmHdc2b2Woz+0s4P1B9Cqnug7delqdkZreb2SwzmzV27NgBCs0557Kn+ekFRKqrC+6RrN31p4bxUtgZ/TVJk7MQy2ogeb+TgMZeljvnXNEzM5oXLqT6uONQeXm+w+lVfxLGTUA1cCOwQtLTkj4/gLE8CnwmvFrqGGCbma0FFgEzJO0jqRw4OyzrnHNFr+O114g1NVFz0kn5DqVPaScMM7vazKYTPJL1ToJhzW9Pd3tJ9wN/Aw6QtFrSBZIulnRxWOQxYDnBpbp3AF8MjxsDLgOeILiE97dm1pDucZ1zrpA1L1wIQM0JH8hzJH1L+8Y9SaOBs4CPAbMJ+hZWpru9mZ3Tx3oDLu1h3WMECcU55waVHQsWUDlzJqVjxuQ7lD71p0lqHfBLghrGr4ETzGyfrETlnHNDQGzTJtpfeZWaE4tjSL7+DA3yMPAb4E9mFs1SPM45N2Q0P/MsmBVF/wX0I2GY2SeyGYhzzg01zQsXUjp2LJUHF8fgFZneuOecc243WDRKy3PPUXPSiQX5ONZU+p0wJJ2RjUCcc24oaa17kURzMzUnnpjvUNKWSQ3j+wMehXPODTHNCxagsjKqjz0236GkLZOEURx1J+ecK2DNCxcy7KijiFRX5zuUtGWSMHocx8k551zfOt95h84VK4rm6qgu3untnHM5tvPu7pOKp/8CPGE451zONS9YQPn06ZRPzsY4rtmTScJYP+BROOfcEBFvbqFlUW1RXR3Vpd8Jw8xOzkYgzjk3FLS88DxEo0XXHAXeJOWccznVvHAhkeHDGXbEEfkOpd88YTjnXI5YIkHzwmeo+cDxqKws3+H0W0YJQ9IVSfMHDFw4zjk3eLU3LCG+cWNR9l9A/0arRdJI4KfAgZLagVeAC4DPDXxozjk3uDQvWAAS1ScUx3Dm3fUrYZjZVuBzkk4FNgIzgYeyEJdzzg06zQsXUnXYYZTuuWe+Q8lIpn0YUTOrAx7Hn4TnnHN9ijY10V5fX3R3dyfLNGHMkTQJuI2gico551wvWp59Fii+u7uTZZowRgJfB74GdKS7kaQ5kpZKWibpmhTrr5b0cjjVS4pLGhWue1vSq+G62gzjds65vGhesIDSvfai4oDivU6oX30YSa4HDjCzpZLi6WwgqQS4BTgZWA0skvSomS3pKmNmPwJ+FJY/A/iqmW1O2s1sM9uYYczOOZcXic5OWp5/gT3OOKNoHpaUSqY1jG8A54XzT6e5zVHAMjNbbmadwAPAmb2UPwe4P8P4nHOuYLQuWkSitbWom6Mg84TRCSwP52enuc1EYFXS+9Xhsl1IGgbMAX6XtNiAJyXVSZrb00EkzZVUK6l2w4YNaYbmnHPZ07xwIaqooPqYY/Idym7JNGG0AiMklQFT0twmVT2sp2drnAE836056jgzOxI4DbhUUsoLmc3sdjObZWazxo4dm2ZozjmXHWZG84KFDDvmaCJVVfkOZ7dkmjCuA94i6JO4N81tVgPJY/lOAhp7KHs23ZqjzKwxfG0CHiZo4nLOuYLWuXw50ZUri/bu7mSZJowvm9mtZjYXWJbmNouAGZL2kVROkBQe7V5I0gjgROD3ScuqJQ3vmgdOAeozjN0553Jm8933oLIyhn/oQ/kOZbdlMjTIL4Cp4dAgi4ELSWNoEDOLSboMeAIoAeaZWYOki8P1t4VFzwKeNLOWpM3HAw+HVxeUAveZ2eP9id0553Itun492x56iBH/9m+UjRuX73B2W7+HBpG0GngG+AdwGP0YGsTMHqPbneFJiaLr/Xxgfrdly8NjOedc0dg8bx6WSDD6ogvzHcqAyOQ+jE3AxcABBDWM1QMakXPODQKxzZvZ8t+/ZcSHP0z5pEn5DmdA9DthmNmNkv4KvAEcDnwAeGmA43LOuaK2+a67sY4ORn+hx7sAik6/E4ak6wn6IF4GXjazBQMck3POFbX49u1sufdehp9yChX77pvvcAZMJjWMayWNB44APippupldNPChOedccdpy770kmpsZc/EX8h3KgMp0LKkvAL/0K5Wcc+69Ei0tbL7rbmpOPJHKgw7KdzgDKtOEMQ+4JLwn4l4ze3ngQnLOueK15bcPEt+6ldGDrHYBu3HjHkGyKQV+PnDhOOdc8Up0dLBp3q8YdvTRDDviiHyHM+AyTRhvAZXA782sOB9O65xzA2zbQw8R37CRMZdcnO9QsiLThNEA/BW4QNKiAYzHOeeKkkWjbLrjTqoOO4xhRx+d73CyItM+jOnAFuD28NU554a0bX/8X6KNjYz/928X9UOSepNpwlhlZn+VNAFoGsiAnHOu2Fg8zqZf/pKKAw+k5qST8h1O1mTaJDVH0iTgNuCnAxiPc84VnR1PPknn228z5uIvDNraBWSeMEYCXwe+BnQMWDTOOVdkzIyNt/2S8n32YfjJJ+c7nKxKO2FISh4t9nqCK6SWAvEBj8o554pE89ML6Fi6lNFfmItKSvIdTlb1p4bxkqRXJH0NkJn9BcDMrslOaM45V9jMjI2/vI2yiRMZ8a//mu9wsq4/CeMmoBq4EVgh6WlJn89OWM45V/haXniB9sWvMPqiC1FZWb7Dybq0E4aZXW1m04FZwJ3ACQSX1Trn3JAT37aNdf9+LWWTJjHirLPyHU5OpH1ZraTRBI9P/RgwGxCwMktxOedcwTIzGr/5LaIbNjDt3t8QqajId0g50Z/7MNYR1Ei2AL8GfmNmz2UlKuecK2Bb7rmH5qeeYtw1X6dq5sx8h5Mz/enDeJighjHBzC7OJFlImiNpqaRlknbpLJd0kqRtkl4Op2vT3dY553Kh7dV61v/ox9TMns2oz3423+HkVJ81DElTwtmrwtcJPdyYstXMtveynxLgFuBkgueAL5L0qJkt6Vb0WTP7cIbbOudc1sR37GDNFVdQOmYMe9/wn4P6Jr1U0mmSuguwcL6ns2PAfODuXvZzFLDMzJYDSHoAOBNI50N/d7Z1zrndZmas/fa/E21sZOo991AycmS+Q8q5PhOGmc0eoGNNBFYlvV8NpBrS8VhJi4FG4Coza+jHtkiaC8wFmDJlSqoizjnXb1vuv58dTzzBuKuuZNiRg+9ZF+nIdGiQTKSqnVi39y8CU83sMOD/AY/0Y9tgodntZjbLzGaNHTs201idc26n9iVLaLrhRqpP+ACjPj90bz/LZcJYDUxOej+JoBaxk5ltN7PmcP4xoEzSmHS2dc65bIg3N7P6q1+lZM892fvGG1Eklx+bhSWXP/kiYIakfSSVA2cDjyYXkLSXwl4kSUeF8W1KZ1vnnBtoZsa6a68jumo1E2/6MaWjRuU7pLzK9HkY/WZmMUmXAU8AJcA8M2uQdHG4/jaCmwIvkRQD2oCzzcyAlNvmKnbn3NC09cEH2f7YY4z9yuUMe//78x1O3in4PB6cZs2aZbW1tfkOwzlXhNqXLuXtT3ySYe97H5PvvGPINEVJqjOzWanWDY0z4Jxz/RDfto01X76cyB7D2fuHPxgyyaIvOWuScs65YmCxGGuuuJLOxkam3jWf0jFj8h1SwfC06ZxzSZp+fBMtzz/PXtf+O8OOPDLf4RQUTxjOORfa+sgjbJ4/nz3PPZc9P/7xfIdTcDxhOOcc0LZ4MeuuvY5hRx/N+Gu+nu9wCpInDOfckBdd38Tqy75E6bhxTLz5p0Pi6XmZ8E5v59yQlujoYPWXvkS8pYVpd95J6Z575jukguUJwzk3ZAV3cl9L+yuvMPH//ZzKA/bPd0gFzZuknHND1uZfz2fb7x9lzJcuY4+TT853OAXPE4ZzbkhqfvY5mn78Y4afcgpjLrkk3+EUBU8Yzrkhp2PFCtZccQUVM2YET87zO7nT4mfJOTekdKxYwaqLL0alpUy65RYi1dX5DqloeMJwzg0Zzc89z9ufPJvE9h1MuvUWyidNzHdIRcUThnNu0DMzNs2fz6q5cymbMIFpDz7IsCOG5mNWd4dfVuucG9QSnZ2su+47bHv4YYaffDJ733iDN0NlyBOGc27QijY1seZLX6Zt8WLGXHopYy79ondw7wZPGM65Qant1XpWX3YZ8e3bmfizn7HHqafkO6Si56nWOTfobPvDH3nn059GJSVMu/8+TxYDxGsYzrlBw+JxNtz8MzbdcQfDZs1i4s9/RumoUfkOa9DwhOGcGxSi69fTeNXVtC5axMhPfIK9vv0tVF6e77AGlZw2SUmaI2mppGWSrkmx/lxJr4TTC5IOS1r3tqRXJb0sqTaXcTvnClvzM8+w4iNn0VZfz4QbbmDC9d/1ZJEFOathSCoBbgFOBlYDiyQ9amZLkoqtAE40sy2STgNuB45OWj/bzDbmKmbnXGGzaJSmm29m86/mUXHAAUz86U+o2HfffIc1aOWySeooYJmZLQeQ9ABwJrAzYZjZC0nl/w5MymF8zrki0rl6DY1XXknb4sWMPPuTjL/mGiKVlfkOa1DLZcKYCKxKer+a99YeursA+FPSewOelGTAL83s9lQbSZoLzAWYMmXKbgXsnCtM2598krXf/ndIJJh480/ZY86cfIc0JOQyYSjFMktZUJpNkDCOT1p8nJk1ShoH/FnS62b2zC47DBLJ7QCzZs1KuX/nXHFKdHTQ9IMfsuW++6g89FAm/vQnlE+enO+whoxcJozVQPJvdhLQ2L2QpJnAncBpZrapa7mZNYavTZIeJmji2iVhOOcGp+i6day65It0vPYao84/n3FXfNU7tnMslwljETBD0j7AGuBs4FPJBSRNAR4CzjOzN5KWVwMRM9sRzp8CXJ+zyJ1zeWWdnay+/HKiK1cy6dZbGf7B2fkOaUjKWcIws5iky4AngBJgnpk1SLo4XH8bcC0wGrhVEkDMzGYB44GHw2WlwH1m9niuYnfO5VfTTTfRvvgVJt58syeLPMrpjXtm9hjwWLdltyXNXwhcmGK75cBh3Zc75wa/7U8+yea77mbP885jjzmn5jucIc3HknLOFazOlStZ+81vUTlzJuOvvirf4Qx5njCccwUp0dHB6q98BUpKmPiTn3gHdwHwsaSccwVp/Q030LHkNSb94lZ/lGqB8BqGc67gbPvDH9n6wH8z+sILGD7bO7kLhScM51xB6Vi+nLXXXUfV+97H2Msvz3c4LoknDOdcwUi0tbHm8suJVFQw8Sc3obKyfIfkkngfhnOuYKy7/nt0LHuLyXfcQdn48fkOx3XjNQznXEHY+ruH2Pbww4y55BJqjj8u3+G4FDxhOOfyrvXFl1j3ve8x7JhjGHPpF/MdjuuBN0k55/Ii0dHBjieeYMv9D9D20kuUjhvHxB//CJWU5Ds01wNPGM65nOpctYqt//3fbP3dQ8S3bKF86lTGff3rjDzrI5SMHJnv8FwvPGE45zKWaG8HM1RZSTg4aEoWj9O8cCFb7n+Alueeg0iE4R/8IHueczbDjjkGRbx1vBh4wnDO9Uu0sZEdT/2VHU89ReuiRRCPQ0kJkepqItXVlNRUExlWTaSmJlhWVUXLP/9JbO1aSseNY8yllzLy4x/zq6CKkCcM51yvzIyON95gx1/+wo6nnqJjyWsAlE+fzujPnU9kjxEkWlpINDcHr11TczPR9etItLRSse++jP/mNxg+ezYq9Y+dYuW/OefceyQ6Oohv3EjnqlU0P/00O576K9HVq0Gi6vDDGXf1VdR88INU7LNPvkN13ZgZHR0ddHR0MGLEiAHfvycM54aQ2ObNdLzxBp3vrCS2cQPxTZuIbdxEbNMm4hs3Etu0iURz887yKi+n+thjGT33IobPnk3p2LF5jL6wmBmJRIJYLEY0GiUajfY6P1A6OztpbW2ltbWVlpaWnfNdUyKRoKamhquuGvjh4D1huEEvkYgTbW+ns62NzrY2ou1tmFm+w+oXM6PznXewtjY0rIpI1TAiVZVEKqt2Dp+RsATNO5ppb28n0dFBrKmJ2Pr1RNevI7a+iej69VhSMgCgahglNdWU1NSg/adTUnMYkfB9yR57UDZ1Gh0VFWwGeOP1YMqjnR/S8RiJeIJEIkE8HieeiJOIvztvCSNhCSxhwTbh/M7XRAIz21m2t9d4PJxi8Z3Hi8VjxOPxvJ6LiooKKisrqayopKaqijGjRlKx93gqKyuprq7JyjE9YRQYi8WINTURXbOGzjVriK5ZQ3RNI7F16yibuDeV/+f/UHXYYVRMnz4o2oI3rHybxU8+xqY1Kwdkf5ZIEG3voLO9NUgQ7W3EOjoGZN9FrzoC1XukWNEBrR3Qugmach5VURHBh2ah/OfFgOZwSjZsxEiOP/W0AT9eofzcRS0ej9PS0kJzczMtLS07p+bmZjrCDyszwzo6gin8Bvie19bWoKOwtQ0skbR3oapKIsNrYPVqIm++ScmDD1KiCJVjx1C1995UTZ5M1dRpVI4fhyQSiUTKKR4PviEBRCKR90wlJSW7LMuWRDzOutdeZcXfn2PT228RKS1j5MTJvV6WuXNbC74xmgXfELu+Qe6cgNLycsqGj2SPcROoqBpGxbBqqqprqKqpoapmONXDh1NaXk4kjeP1GUsi0XfBNBhGNBqlszNKZ1srza+/zo7XXqdt3TpiJSXY2LEwYQKtgm2tbXQkfbutAGqA4dEY1R0dVJaWUDp6NKWjR1MyejSRPfYYVJetlpREiERKdvnbLYlEiJSUUBKJoIiQIkSktP6uBptIlr5M5jRhSJoD/AwoAe40sxu7rVe4/nSgFTjfzF5MZ9tcaG1tZeWSJaxsaGBNYyPbOjpoA3r6/lqSSFAei0EiAQkDUjSDSBCJoMoqqK4O7nItKXn3NRIBKag+x+PEolGiye2h0SgsXx5MBU6xKGVbNlC2dQORWJREWTmd4yYRHTGGbbv5B15aWkppaSklJSV0dnYSjUYhCkTbYXs7sGmXbbo+bJKnrn2UhHcbx2Kxd5skwqlrWdabtSZMCqYw1srKSvbcc08OGDeO8ePHM27cOMaNG0dNTXaaH5zrLmcJQ1IJcAtwMrAaWCTpUTNbklTsNGBGOB0N/AI4Os1tB1S0vZ1VL73EyiVLWNPYyPr2drZ3DbVsxh7btzOipZWxsRhV8RiViQRVZlQBVUC1IpSVlRGpqgq/6Y2idPQYSkePomT0aErHjKF01CgiI0b0+xtQV/KIRqN0trayfembbH39dba9uYJYSwsCImbBK4YsGDQsghEhbPZqbyfe0kqio51YWzux9nYsEScRiQAKX9+linJUUYkqKyipqkQVVai0hOjadcS3bAkLQen4vSjfZyrlU6ZSMXUqpZMns71pLSv/8Qzr36jH4nFG73cQU445gTEzDu7XN19JlACliQQRM0oTcSLxBCXxBEQ7sWgU6+zEEgli8Tid0Sjt0U46ozE6olE6YrFgWVcSiMWCKR4nHk8Qj8WJt7YRtwTxMMlHEgnKEgki8QSR8HiReAzF4sFrYmCShnV0ENmyhXIzhh90IHseeywjZs6kctgwKioqKCsrS/l30glsbukckBiGmpKIqCiNUFYSoSQy9GohmVCuOv8kHQt8x8xODd9/A8DMbkgq80tggZndH75fCpwETOtr21RmzZpltbW1/Yoz2tbGLz77WRIaPFX4bLEUc7u+T5CgHVFKRWQylZGplMi/ETuXTWWdjZz72+sz2lZSnZnNSrUul01SE4FVSe9XE9Qi+iozMc1tAZA0F5gLMGXKlH4HWVZVhSKVKFLR722HGqWY2/W9KIvsSWnpJKRSYgQddc657ImVZOcLby4TRqo6X/evpj2VSWfbYKHZ7cDtENQw+hNgly89cHcmmznn3KCWy4SxGpic9H4S0JhmmfI0tnXOOZdFuWyoXwTMkLSPpHLgbODRbmUeBT6jwDHANjNbm+a2zjnnsihnNQwzi0m6DHiC4NLYeWbWIOnicP1twGMEl9QuI7is9nO9bZur2J1zzuXwKql8yOQqKeecG8p6u0rKrx11zjmXFk8Yzjnn0uIJwznnXFo8YTjnnEvLoO70lrQBeCfDzccAGwcwnGzxOAdWMcRZDDGCxznQchXnVDNL+aSsQZ0wdoek2p6uFCgkHufAKoY4iyFG8DgHWiHE6U1Szjnn0uIJwznnXFo8YfTs9nwHkCaPc2AVQ5zFECN4nAMt73F6H4Zzzrm0eA3DOedcWjxhOOecS4snjG4kzZG0VNIySdfkO55kkt6W9KqklyXVhstGSfqzpDfD1z3zENc8SU2S6pOW9RiXpG+E53eppFPzHOd3JK0Jz+nLkk4vgDgnS3pa0muSGiRdHi4vqHPaS5wFdU4lVUr6p6TFYZzfDZcXzPnsJcaCOpeYmU/hRDB0+lvAvgQPbVoMHJzvuJLiexsY023ZD4FrwvlrgB/kIa4TgCOB+r7iAg4Oz2sFsE94vkvyGOd3gKtSlM1nnBOAI8P54cAbYTwFdU57ibOgzinBEztrwvky4B/AMYV0PnuJsaDOpdcw3usoYJmZLTezTuAB4Mw8x9SXM4G7wvm7gI/kOgAzewbY3G1xT3GdCTxgZh1mtoLg2SdH5THOnuQzzrVm9mI4vwN4jeC59gV1TnuJsyf5itPMrDl8WxZORgGdz15i7ElezqUnjPeaCKxKer+a3v8Bcs2AJyXVSZobLhtvwVMJCV/H5S269+oprkI8x5dJeiVssupqliiIOCVNA44g+MZZsOe0W5xQYOdUUomkl4Em4M9mVnDns4cYoYDOpSeM91KKZYV03fFxZnYkcBpwqaQT8h1QBgrtHP8CmA4cDqwFbgqX5z1OSTXA74CvmNn23oqmWJazWFPEWXDn1MziZnY4MAk4StKhvRTPS5w9xFhQ59ITxnutBiYnvZ8ENOYpll2YWWP42gQ8TFAFXS9pAkD42pS/CN+jp7gK6hyb2frwHzUB3MG71fq8ximpjOBD+F4zeyhcXHDnNFWchXpOw9i2AguAORTg+eweY6GdS08Y77UImCFpH0nlwNnAo3mOCQBJ1ZKGd80DpwD1BPF9Niz2WeD3+YlwFz3F9ShwtqQKSfsAM4B/5iE+YOcHRZezCM4p5DFOSQJ+BbxmZj9JWlVQ57SnOAvtnEoaK2lkOF8FfAh4nQI6nz3FWGjnMqs96sU4AacTXO3xFvCtfMeTFNe+BFdFLAYaumIDRgNPAW+Gr6PyENv9BNXlKME3nwt6iwv4Vnh+lwKn5TnOe4BXgVcI/gknFECcxxM0L7wCvBxOpxfaOe0lzoI6p8BM4KUwnnrg2nB5wZzPXmIsqHPpQ4M455xLizdJOeecS4snDOecc2nxhOGccy4tnjCcc86lxROGc865tHjCcC4NkkZK+mLS+70l/U+WjvURSdf2sK45fB0r6fFsHN+5nnjCcC49I4GdCcPMGs3sY1k61teAW3srYGYbgLWSjstSDM7twhOGc+m5EZgePpPgR5KmKXyuhqTzJT0i6Q+SVki6TNIVkl6S9HdJo8Jy0yU9Hg4e+aykA7sfRNL+QIeZbQzf7yPpb5IWSfpet+KPAOdm9ad2LoknDOfScw3wlpkdbmZXp1h/KPApgrF+vg+0mtkRwN+Az4Rlbge+ZGbvA64idS3iOODFpPc/A35hZu8H1nUrWwt8IMOfx7l+K813AM4NEk9b8EyIHZK2AX8Il78KzAxHdP2/wIPBEExA8PCb7iYAG5LeHwd8NJy/B/hB0romYO+BCd+5vnnCcG5gdCTNJ5LeJwj+zyLAVguGr+5NGzCi27Kexu+pDMs7lxPeJOVcenYQPIY0IxY8J2KFpI9DMNKrpMNSFH0N2C/p/fMEoybDrv0V+/Pu6KXOZZ0nDOfSYGabgOcl1Uv6UYa7ORe4QFLXiMOpHv/7DHCE3m23upzgYVmL2LXmMRv43wxjca7ffLRa5wqMpJ8BfzCzv/RR7hngTDPbkpvI3FDnNQznCs9/AsN6KyBpLPATTxYul7yG4ZxzLi1ew3DOOZcWTxjOOefS4gnDOedcWjxhOOecS4snDOecc2n5/wEmAgFZD+/AxQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
    " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "swiftdiff['vmag'].sel(id=tpidx).plot.line(ax=ax, x=\"time (d)\")\n", - "ax.set_ylabel(\"$|\\mathbf{v}_{swiftest} - \\mathbf{v}_{swifter}|$\")\n", - "ax.set_title(\"Heliocentric velocity differences \\n Test Particles only\")\n", - "legend = ax.legend()\n", - "legend.remove()\n", - "fig.savefig(\"rmvs_swifter_comparison-mars_ejecta-testparticles-vmag.png\", facecolor='white', transparent=False, dpi=300)" + "swiftdiff['rmag'].sel(id=2)" ] }, { diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/cb.swiftest.in b/examples/rmvs_swifter_comparison/mars_ejecta/cb.swiftest.in index 2aafc8408..40cf41bad 100644 --- a/examples/rmvs_swifter_comparison/mars_ejecta/cb.swiftest.in +++ b/examples/rmvs_swifter_comparison/mars_ejecta/cb.swiftest.in @@ -1,3 +1,4 @@ +0 0.00029591220828563 0.004650467260962157 0.0 diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/config.swiftest.in b/examples/rmvs_swifter_comparison/mars_ejecta/param.swiftest.in similarity index 80% rename from examples/rmvs_swifter_comparison/mars_ejecta/config.swiftest.in rename to examples/rmvs_swifter_comparison/mars_ejecta/param.swiftest.in index 3f459514f..7df10c4d0 100644 --- a/examples/rmvs_swifter_comparison/mars_ejecta/config.swiftest.in +++ b/examples/rmvs_swifter_comparison/mars_ejecta/param.swiftest.in @@ -1,8 +1,3 @@ -! -! Parameter file for the CHO run of the 4 giant planets and Pluto. -! -!NPLMAX -1 ! not used -!NTPMAX -1 ! not used T0 0.0e0 TSTOP 6000.000 ! simulation length in days DT 1e0 ! stepsize in days @@ -21,8 +16,6 @@ CHK_RMIN 0.005e0 ! check for close solar encounters CHK_RMAX 10000.0e0 ! discard outside of CHK_EJECT -1.0 ! ignore this check CHK_QMIN -1.0 ! ignore this check -!CHK_QMIN_COORD HELIO ! commented out here -!CHK_QMIN_RANGE 1.0 1000.0 ! commented out here ENC_OUT enc.swiftest.dat EXTRA_FORCE no ! no extra user-defined forces BIG_DISCARD yes ! output all planets if anything discarded diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/profmaker.sh b/examples/rmvs_swifter_comparison/mars_ejecta/profmaker.sh deleted file mode 100755 index 9b1adcd8c..000000000 --- a/examples/rmvs_swifter_comparison/mars_ejecta/profmaker.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -gprof ./swiftest_driver | /home/daminton/git/gprof2dot/gprof2dot.py | dot -Tpng -o swiftest_profile.png diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/profswifter.sh b/examples/rmvs_swifter_comparison/mars_ejecta/profswifter.sh deleted file mode 100755 index a03493f54..000000000 --- a/examples/rmvs_swifter_comparison/mars_ejecta/profswifter.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -gprof ./swifter_rmvs | /home/daminton/git/gprof2dot/gprof2dot.py | dot -Tpng -o swifter_profile.png diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/start.in b/examples/rmvs_swifter_comparison/mars_ejecta/start.in deleted file mode 100644 index d6d7c3850..000000000 --- a/examples/rmvs_swifter_comparison/mars_ejecta/start.in +++ /dev/null @@ -1 +0,0 @@ -param.in diff --git a/examples/rmvs_swifter_comparison/mars_ejecta/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/mars_ejecta/swiftest_rmvs_vs_swifter_rmvs.ipynb index 2ef9e28a5..c0ae7eec3 100644 --- a/examples/rmvs_swifter_comparison/mars_ejecta/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/mars_ejecta/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -6,8 +6,8 @@ "metadata": {}, "outputs": [], "source": [ + "import swiftest\n", "import numpy as np\n", - "import swiftestio as swio\n", "import matplotlib.pyplot as plt" ] }, @@ -20,14 +20,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "Reading Swifter file param.swifter.in\n" + "Reading Swifter file param.swifter.in\n", + "Reading in time 6.000e+03\n", + "Creating Dataset\n", + "Successfully converted 6001 output frames.\n", + "Swifter simulation data stored as xarray DataSet .ds\n" ] } ], "source": [ "inparfile = 'param.swifter.in'\n", - "param = swio.read_swifter_param(inparfile)\n", - "swifterdat = swio.swifter2xr(param)" + "swiftersim = swiftest.Simulation(param_file=inparfile, codename=\"Swifter\")\n", + "swiftersim.bin2xr()\n", + "swifterdat = swiftersim.ds" ] }, { @@ -39,14 +44,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "Reading Swiftest file param.swiftest.in\n" + "Reading Swiftest file param.swiftest.in\n", + "Reading in time 6.001e+03\n", + "Creating Dataset\n", + "Successfully converted 6002 output frames.\n", + "Swiftest simulation data stored as xarray DataSet .ds\n" ] } ], "source": [ - "param_file_name = 'param.swiftest.in'\n", - "config = swio.read_swiftest_config(param_file_name)\n", - "swiftestdat = swio.swiftest2xr(config)" + "inparfile = 'param.swiftest.in'\n", + "swiftestsim = swiftest.Simulation(param_file=inparfile)\n", + "swiftestsim.bin2xr()\n", + "swiftestdat = swiftestsim.ds" ] }, { @@ -94,7 +104,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -120,7 +130,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -141,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -153,7 +163,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -176,7 +186,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -188,7 +198,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -219,9 +229,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "swiftestOOF", "language": "python", - "name": "python3" + "name": "swiftestoof" }, "language_info": { "codemirror_mode": { @@ -233,7 +243,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.7.10" } }, "nbformat": 4, diff --git a/examples/whm_gr_test/cb.swiftest.in b/examples/whm_gr_test/cb.swiftest.in index 058975b81..e4a010b1e 100644 --- a/examples/whm_gr_test/cb.swiftest.in +++ b/examples/whm_gr_test/cb.swiftest.in @@ -1,3 +1,4 @@ +0 39.476926408897626 0.004650467260962157 4.7535806948127355e-12 diff --git a/examples/whm_gr_test/init_cond.py b/examples/whm_gr_test/init_cond.py index ddd4a315c..57b0fb534 100755 --- a/examples/whm_gr_test/init_cond.py +++ b/examples/whm_gr_test/init_cond.py @@ -6,7 +6,7 @@ sim.param['TP_IN'] = "tp.swiftest.in" sim.param['CB_IN'] = "cb.swiftest.in" sim.param['BIN_OUT'] = "bin.swiftest.dat" -sim.param['ENC_OUT'] = "enc.swiftest.dat +sim.param['ENC_OUT'] = "enc.swiftest.dat" sim.param['MU2KG'] = swiftest.MSun sim.param['TU2S'] = swiftest.YR2S @@ -41,7 +41,6 @@ for name, id in bodyid.items(): sim.add(name, idval=id) -" sim.save("param.swiftest.in") sim.param['PL_IN'] = "pl.swifter.in" sim.param['TP_IN'] = "tp.swifter.in" diff --git a/examples/whm_gr_test/pl.swifter.in b/examples/whm_gr_test/pl.swifter.in index fb614bcbd..e0ef4e881 100644 --- a/examples/whm_gr_test/pl.swifter.in +++ b/examples/whm_gr_test/pl.swifter.in @@ -2,35 +2,35 @@ 0 39.476926408897625196 0.0 0.0 0.0 0.0 0.0 0.0 -1 6.5537098095653139645e-06 0.0014751244996981091688 +1 6.5537098095653139645e-06 0.0014751243077781048702 1.6306381826061645943e-05 -0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 --3.3367255059737357791 10.64622790896598922 1.1760542104884461008 -2 9.663313399581537916e-05 0.006759105927487850036 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-4.2340114788918336805 10.486553514018327622 1.2453138107251555947 +2 9.663313399581537916e-05 0.006759104275397271956 4.0453784346544178454e-05 --0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 --0.12984901004910088259 -7.4200262222437848615 -0.09433956287915627552 -3 0.000120026935827952453094 0.010044781409779763954 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.07826338813583945357 -7.419533988988633545 -0.10634201014368884618 +3 0.000120026935827952453094 0.010044787321379672528 4.25875607065040958e-05 -0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 -5.817808761117269037 2.0836935934869021533 -0.00011769228482089048983 -4 1.2739802010675941456e-05 0.007246745952808948377 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +5.7819217550992820422 2.18192814489641851 -0.00012230072278352209966 +4 1.2739802010675941456e-05 0.007246743835971885302 2.265740805092889601e-05 --1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 --1.908390450061588966 -4.22386803675231535 -0.041705300362175825686 -5 0.037692251088985676735 0.35527129445679039879 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-1.8728417739956807141 -4.239719661832373223 -0.042909557750301418264 +5 0.037692251088985676735 0.35527126534549128905 0.00046732617030490929307 -4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 -1.6095092959604531543 2.3468202746428659788 -0.045756236082127820444 -6 0.011285899820091272997 0.43765252895139074356 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +1.6060801375519682711 2.349356876761497338 -0.045690062807172619064 +6 0.011285899820091272997 0.4376527512949726007 0.00038925687730393611812 -6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 -1.466832763395646828 1.2863740305106504463 -0.0807227702193550598 -7 0.0017236589478267730203 0.4695335374930126262 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +1.4661378456572359413 1.2872251175075805794 -0.08070991686100478242 +7 0.0017236589478267730203 0.4695362423191493196 0.00016953449859497231466 -14.8586976850394894 13.004806892491039605 -0.14422203290693380584 --0.9552190982402187873 1.0163552941629989916 0.016097455433874226457 -8 0.0020336100526728302319 0.78128379442879379807 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.9554310497290159123 1.0161753499437922057 0.016099529164307530124 +8 0.0020336100526728302319 0.7812870996943599397 0.000164587904124493665 -29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 -0.17174414812321077623 1.1422632832628163399 -0.02744788192962509712 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.17162147939801157335 1.1422848961108499101 -0.027445465472921385952 diff --git a/examples/whm_gr_test/pl.swiftest.in b/examples/whm_gr_test/pl.swiftest.in index 874012fc6..9d49cc3da 100644 --- a/examples/whm_gr_test/pl.swiftest.in +++ b/examples/whm_gr_test/pl.swiftest.in @@ -1,33 +1,33 @@ 8 1 6.5537098095653139645e-06 1.6306381826061645943e-05 -0.3424231950105547928 0.045418598038753463242 -0.027698852186471431547 --3.3367255059737357791 10.64622790896598922 1.1760542104884461008 +0.33206272695596028566 0.07436707001147663254 -0.02438290851908785084 +-4.2340114788918336805 10.486553514018327622 1.2453138107251555947 2 9.663313399581537916e-05 4.0453784346544178454e-05 --0.7187409324847692238 0.008460121607685697903 0.041591140610292232083 --0.12984901004910088259 -7.4200262222437848615 -0.09433956287915627552 +-0.7188115337296047125 -0.0118554711069603201795 0.041316403191083782287 +0.07826338813583945357 -7.419533988988633545 -0.10634201014368884618 3 0.000120026935827952453094 4.25875607065040958e-05 -0.34089134446377761245 -0.95773246142964407746 4.435598231277717939e-05 -5.817808761117269037 2.0836935934869021533 -0.00011769228482089048983 +0.35677088372527121507 -0.95189300879814897627 4.4027442504036787155e-05 +5.7819217550992820422 2.18192814489641851 -0.00012230072278352209966 4 1.2739802010675941456e-05 2.265740805092889601e-05 --1.5181949547849429294 0.68396861668094566244 0.051574975426518870902 --1.908390450061588966 -4.22386803675231535 -0.041705300362175825686 +-1.5233712071242269115 0.6723825347339112968 0.051459143378398922164 +-1.8728417739956807141 -4.239719661832373223 -0.042909557750301418264 5 0.037692251088985676735 0.00046732617030490929307 -4.0455430243320495975 -2.9975165850765859155 -0.07806209765007877943 -1.6095092959604531543 2.3468202746428659788 -0.045756236082127820444 +4.049944927347420176 -2.9910878677758190314 -0.078187280837353656526 +1.6060801375519682711 2.349356876761497338 -0.045690062807172619064 6 0.011285899820091272997 0.00038925687730393611812 -6.29491448542079457 -7.7099360898166890976 -0.11647820911165690516 -1.466832763395646828 1.2863740305106504463 -0.0807227702193550598 +6.298929503477405767 -7.706413024510769816 -0.11669919842191249504 +1.4661378456572359413 1.2872251175075805794 -0.08070991686100478242 7 0.0017236589478267730203 0.00016953449859497231466 -14.8586976850394894 13.004806892491039605 -0.14422203290693380584 --0.9552190982402187873 1.0163552941629989916 0.016097455433874226457 +14.856082147529010129 13.007589275314199284 -0.14417795763685259391 +-0.9554310497290159123 1.0161753499437922057 0.016099529164307530124 8 0.0020336100526728302319 0.000164587904124493665 -29.55697963607957135 -4.6325049341728004038 -0.5858344271811812831 -0.17174414812321077623 1.1422632832628163399 -0.02744788192962509712 +29.55744967800954015 -4.629377558152945049 -0.58590957207831262377 +0.17162147939801157335 1.1422848961108499101 -0.027445465472921385952 diff --git a/examples/whm_gr_test/swiftest_relativity.ipynb b/examples/whm_gr_test/swiftest_relativity.ipynb index 90f48b315..0d8111fea 100644 --- a/examples/whm_gr_test/swiftest_relativity.ipynb +++ b/examples/whm_gr_test/swiftest_relativity.ipynb @@ -115,16 +115,16 @@ "text": [ "Mean precession rate for Mercury long. peri. (arcsec/100 y)\n", "JPL Horizons : 573.8351991142854\n", - "Swifter GR : 579.6804682138315\n", - "Swiftest GR : 579.6804681921402\n", - "Obs - Swifter : -5.845269099546055\n", - "Obs - Swiftest : -5.845269077854606\n", - "Swiftest - Swifter: -2.169144863728434e-08\n" + "Swifter GR : 579.5897815748845\n", + "Swiftest GR : 579.5897815748845\n", + "Obs - Swifter : -5.754582460598964\n", + "Obs - Swiftest : -5.754582460598964\n", + "Swiftest - Swifter: 0.0\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -153,13 +153,6 @@ "print(f'Swiftest - Swifter: {np.mean(dvarpi_swiftest - dvarpi_swifter)}')" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, From 211fe0d855bd7cfc4716952ad866dcd784910a47 Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 07:02:04 -0400 Subject: [PATCH 22/23] Fixed util_peri bugs and simplified it --- .../swiftest_vs_swifter.ipynb | 2 +- .../swiftest_rmvs_vs_swifter_rmvs.ipynb | 4 +- src/util/util_peri.f90 | 77 ++++++++----------- 3 files changed, 33 insertions(+), 50 deletions(-) diff --git a/examples/helio_swifter_comparison/swiftest_vs_swifter.ipynb b/examples/helio_swifter_comparison/swiftest_vs_swifter.ipynb index 9a487a59c..7f0b1d4b9 100644 --- a/examples/helio_swifter_comparison/swiftest_vs_swifter.ipynb +++ b/examples/helio_swifter_comparison/swiftest_vs_swifter.ipynb @@ -153,7 +153,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAElCAYAAADgCEWlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAmCUlEQVR4nO3de7xUdb3/8dc7BDFBSUERkIumgqAikLc8hp6fJmY/Q7FEzTRPpKc89TN/ap1zvPUr7XQy8ZaHvGX2g8oK0VBT0Z+GmqKC1yi8xRZURJGbBGw+vz/W2pyZzey9Z8/Mntmz1/v5eMyDmVlrvuuzBNdnfa9LEYGZmVmTj9Q6ADMz61ycGMzMLI8Tg5mZ5XFiMDOzPE4MZmaWx4nBzMzyODFYlyXpEkm3p+8HS1otqVsJ5dwg6d8rH6FZ5+TEYJ2WpNcl/Y9m350u6Y/tLSsi/hYRvSKisYTfnhUR3y1mX0m3Svo/7T1GpZT638cslxODWZ2QtFVXOIZ1fk4MVtckDZD0G0nLJL0m6V9a2G+opGi68KW/myXpPUmLJH2llWNsrgVIGi+pQdK3JL0jaamkM9JtU4BTgPPTZqu72opR0jaSfibpfUkvSzpfUkPO9tclXSDpOWCNpK0kXSjpFUmrJL0kaWK67wjgBuDg9Pgr0u+3l3Rbevw3JP2bpI+k206XNFfSjyW9B1xS6t+FdR2+O7C6lV7c7gLuBCYDg4AHJC2MiPva+Pl04EVgADAcuF/SqxHxYBGH7g9sDwwEjgTukDQzIqZJOgRoiIh/KzLGi4GhwG7AtsDsAsebDHwGeDciNkp6BfgH4C3gROB2SR+PiJclnQX8U0QcmvP7a9J4dwN2BP4ALAVuSrcfCMwAdgK6F3H+1sW5xmCd3UxJK5pewPU52z4B9IuIyyJifUS8CvwUOKm1AiXtChwKXBAR6yJiPnAj8MUiY9oAXBYRGyJiNrAa2KuFfduK8fPA9yPi/YhoAK4uUMbVEbE4Ij4EiIhfR8SSiNgUEb8E/goc0MK5dgO+AHw7IlZFxOvAj5qd65KIuCYiNjYdw7LNNQbr7D4XEQ80fZB0OvBP6cchwICmJpNUN+DRNsocALwXEatyvnsDGFdkTMsjYmPO57VArxb2bSvGAcDinG257wt+J+k04FySmgbpsfu2cPy+QA+S82vyBkltp7VjWoY5MVg9Wwy8FhF7tPN3S4AdJPXOSQ6DgTcrEFPz5YrbinEpSfPSS+nnXVsrU9IQkhrHPwKPR0SjpPmAWjj+uyQ1nCE5x2h+rl5i2fK4Kcnq2ZPAyrRzdhtJ3SSNkvSJ1n4UEYuBx4DLJfWUtC9wJvCLCsT0NklbfrEx/gr4tqSPSRoIfL2N8rcluZAvA0g7vkc1O/4gST0A0uG5vwK+J6l3mljOBW4v7zStK3NisLqVXvQ+C4wGXiO5O76RpKO1LZNJmmKWAL8DLo6I+ysQ1k3A3mmfyMwiYrwMaEi3PQDcAfy9pcIj4iWSPoLHSZLAPsDcnF3mkHSqvyXp3fS7c4A1wKvAH4H/C9xc7ola1yU/qMes85B0NnBSRHyq1rFYdrnGYFZDknaR9ElJH5G0F/AtkhqMWc2489mstnoA/wUMA1aQzCe4vrUfmHU0NyWZmVkeNyWZmVkeJwbLnEKrtnYVzdeEMiuFE4N1SenFcU26mNybkq5UCc9iqEAMH6/mMc0qwYnBurL9IqIXySzhk4EWV1A1s//mxGBdXkT8mWRtolHNt0k6QNLj6YS0pZKubZo1nG4PSWdJ+mu6NPZ1kpSz/cvpctnvS7ovnVmMpEfSXRaktZYvSOor6e70WO9JerRp+esCcR0i6SlJH6R/HpKz7WFJ302Xy14l6Q+StlgrSdKJkp5u9t23JM1s339ByxonBuvyJO1Nskz1swU2NwL/i2SxuYNJahf/3GyfY0lWSd2PZDXUT6flfg74DnA80I8k+UwHiIjD0t/ulz457pckcxQa0n13Tn+7xbBASTsAvydZaXVH4Erg95J2zNntZOAMkqWyewDnFTi3WcCw9DkNTU4Ffl5gX7PNukRikHSzkoemvFCBskand5AvSnpO0hdytg2T9Kf07vGXuXeW1ik9I+l9kuch3Ajc0nyHiHg6Ip5Il5x+nWROQfNZx1dExIqI+BvwEMnyFgBfBS6PiJfT1Va/D4xuqjUUsAHYBRiSLtn9aBQeL/4Z4K8R8fM0runAn0mW1mhyS0T8JV0m+1c5MeWe29+BX5IkAySNJFkG5O4W4jMDukhiAG4Fjq5QWWuB0yJiZFrmVZL6pNt+APw4XSnzfZKF16zzGhMRH4uI3SPi3yJiU/MdJO2ZNu+8JWklycW9ebPMWznvc5fYHgJMzXlWxHskq5wOpLAfAouAP0h6VdKFLew3gPxlsmHLpbJbiqm5nwEnp81fXwR+lSYMsxZ1icQQEY+Q/E+5maTdJd0r6em0LXd4kWX9JSL+mr5fArwD9Ev/xzqCZJEzSP6H+1ylzsFq5ickd+N7RMR2JM07av0nmy0GvhoRfXJe20TEY4V2Th+U862I2I3k7v9cSf9YYNclJEknV0nLgkfEE8B6kqa0k3EzkhWhSySGFkwDzomIsSTtr+1eZkDSASTtt6+QtPWuyHlASwMt3xla/egNrARWpzcPZ7fjtzeQLJk9EjY/W/nEnO15S3BLOlbSx9ObjJUk/RuNBcqdDewp6WQlz3j+ArA3pTcB3QZcC2yMiD+WWIZlSJecBCOpF3AI8OucASRbp9uOJ1nquLk3I+LTOWXsQnJ39aWI2JQ7EiWH1xOpf+eR3EScT9I5/UuSmmGbIuJ36b+1GWm/wgfA/cCv010uAX4maRtgCsmNxLUknc/vA9dHxMMFyl0u6VhgKkmNZhFwbES823zfIv0c+G76MmtTl1krSdJQ4O6IGCVpO2BhROxSYlnbAQ+TdCz+Ov1OJA9H6Z8+kP1g4JLcZGLWGaWJ6R2SPpe/1joe6/y6ZFNSRKwEXmuq1iuxXzG/TUca/Q64rSkppGUGyYiUSelXXwLurGjgZh3jbOApJwUrVpeoMUiaDownGU3yNnAxyZOsfkIyPLA7MCMiCjUhNS/rVJJhjS/mfH16RMyXtBvJssg7kDQ7nOoRHtaZSXqdpDP9cxFRaB6H2Ra6RGIwM7PK6ZJNSWZmVrq6H5XUt2/fGDp0aK3DMDOrK08//fS7EdGv0La6TwxDhw5l3rx5tQ7DzKyuSGo+u34zNyWZmVkeJwYzM8vjxGBmZnnqvo/BzKxWNmzYQENDA+vWrat1KC3q2bMngwYNonv37kX/xonBzKxEDQ0N9O7dm6FDh1J4ObXaigiWL19OQ0MDw4YNK/p3bkoyMyvRunXr2HHHHTtlUgCQxI477tjuGo0Tg5lZGTprUmhSSnyZbkpaunopMxfNpDG2XBJ/2+7bcsqIU+jRzU/vNLNsyXRimPnKTK5fcD1q9sCuSB+zsG+/fRm789hahGZmGXHIIYfw2GNbPvTv9NNP59hjj2XSpEkFftWxMp0YNqWPAH7uS8/lff/UW0/x5fu+vHm7mVlHKZQUai3TicEry5pZrfXq1YvVq1cTEZxzzjnMmTOHYcOG1fT6lOnO5yC2aEbK2+7EYWZV8rvf/Y6FCxfy/PPP89Of/rSmNYlMJwYzs87ikUceYfLkyXTr1o0BAwZwxBFFPXq8Q2Q6MUREwaFcrdUizMw6SmcZ+prpxGBm1lkcdthhzJgxg8bGRpYuXcpDDz1Us1gy3fkMrdcOmoatmpl1tIkTJzJnzhz22Wcf9txzTz71qU/VLJbMJwYzs1pavXo1kDQjXXvttTWOJpHppqSWRiV1lnY+M7NayHRiMDOzLWU6MUQErQ1Ach+DmWVR1RKDpF0lPSTpZUkvSvpGgX3GS/pA0vz0dVG14jMzs0Q1O583At+KiGck9QaelnR/RLzUbL9HI+LYagTUYh+D5zGYWYZVrcYQEUsj4pn0/SrgZWBgtY7fEicBM7N8NeljkDQU2B/4U4HNB0taIOkeSSM7Mo62+hC8VpKZdXZf/vKX2WmnnRg1alTFyqx6YpDUC/gN8M2IWNls8zPAkIjYD7gGmNlCGVMkzZM0b9myZeXGU9R3Zmad0emnn869995b0TKrmhgkdSdJCr+IiN823x4RKyNidfp+NtBdUt8C+02LiHERMa5fv36lB+QKgZnVucMOO4wddtihomVWrfNZyW34TcDLEXFlC/v0B96OiJB0AEniWt5RMbW57LYzh5kV6dK7XuSlJc0bQcqz94DtuPizHdqiXlA1RyV9Evgi8Lyk+el33wEGA0TEDcAk4GxJG4EPgZPCDf1mZlVVtcQQEX+k1elkEBHXAlVbLMTLbptZpdTizr6jZHrms5mZbSnTiaHNPgQ3YplZJzd58mQOPvhgFi5cyKBBg7jpppvKLtPLbpuZ1bHp06dXvMzM1xjcn2Bmli/TicHMzLaU6cTQ0qikzdvdyWBmGZTpxAAemmpm1lzmE0MhXivJzLIs84nBS2KYmeXLdGLwhd/M6tnixYs5/PDDGTFiBCNHjmTq1KkVKTfT8xhaeuaz+x3MrB5stdVW/OhHP2LMmDGsWrWKsWPHcuSRR7L33nuXVW6mawxmZvVsl112YcyYMQD07t2bESNG8Oabb5ZdbrZrDG0tu+2FXc2sWPdcCG89X9ky++8DE64oatfXX3+dZ599lgMPPLDsw7rGYGZW51avXs0JJ5zAVVddxXbbbVd2edmuMXjZbTOrlCLv7Cttw4YNnHDCCZxyyikcf/zxFSnTNQYzszoVEZx55pmMGDGCc889t2LlZjox+NGeZlbP5s6dy89//nPmzJnD6NGjGT16NLNnzy673Ew3JZmZ1bNDDz20QwbJZLrGAIX7E7wkhpllmRODk4CZWZ5MJwbPUzAz21KmE0NLPFzVzLIs04nBo47MzLaU+cTgJTHMzPJlOjGYmdWzdevWccABB7DffvsxcuRILr744oqUm+l5DC0+89ldDGZWB7beemvmzJlDr1692LBhA4ceeigTJkzgoIMOKqtc1xjMzOqUJHr16gUkayZt2LChIkPwM11jAD/a08wq4wdP/oA/v/fnipY5fIfhXHDABa3u09jYyNixY1m0aBFf+9rX6mvZbUm7SnpI0suSXpT0jQL7SNLVkhZJek7SmGrFZ2ZWj7p168b8+fNpaGjgySef5IUXXii7zGrWGDYC34qIZyT1Bp6WdH9EvJSzzwRgj/R1IPCT9M8O0dKoJM9jMLP2auvOvqP16dOH8ePHc++99zJq1KiyyqpajSEilkbEM+n7VcDLwMBmux0H3BaJJ4A+knbp0MCcA8ysTi1btowVK1YA8OGHH/LAAw8wfPjwssutSR+DpKHA/sCfmm0aCCzO+dyQfre02e+nAFMABg8eXHIcbc1T8DwGM+vMli5dype+9CUaGxvZtGkTn//85zn22GPLLrfqiUFSL+A3wDcjYmXzzQV+ssXVOSKmAdMAxo0bV9bV281GZlav9t13X5599tmKl1vV4aqSupMkhV9ExG8L7NIA7JrzeRCwpKPiaWnUkZOFmWVZNUclCbgJeDkirmxht1nAaenopIOADyJiaQv7ViquFrd5uKqZZVE1m5I+CXwReF7S/PS77wCDASLiBmA2cAywCFgLnNGRAbkPwcxsS1VLDBHxR9oYAxTJlfpr1Yko4Se4mZnly/SSGG4qMjPbUqYTA3hJDDOz5jKfGMzM6l1jYyP7779/ReYwQBF9DJKKnUG2osC8hE6tpWW3PVzVzOrJ1KlTGTFiBCtXVuYSXEzn889IJpm1drUM4FbgtgrEZGZmRWpoaOD3v/89//qv/8qVV7Y0E6B92kwMEXF48+8k9Y+ItyoSQQ212YfgLgYzK9Jb3/8+f3+5sstubz1iOP2/851W9/nmN7/Jf/zHf7Bq1aqKHbfUPobTKhZBjbnZyMzq1d13381OO+3E2LFjK1puqfMYjpO0Frg/IhZWMqBq8qgjM6uUtu7sO8LcuXOZNWsWs2fPZt26daxcuZJTTz2V22+/vaxyS60xHE8yO3mipBvLiqDGPJnNzOrV5ZdfTkNDA6+//jozZszgiCOOKDspQIk1hoh4G7g3fdWtNpfddo3CzDKopBqDpOsk3Zq+P6qiEVWZl8Qws65g/Pjx3H333RUpq9SmpPXAq+n7IyoSSQ24RmBmtqVSE8NaYPv0+QqlP0KtE/Cy22Zm+UodlfQe8CFwHTC3cuFUma/7ZmZbaFeNQVIfSbcAJ6Rf3QaMq3hUVRJE4T4Gz20wswxrV40hIlZIugIYCrwL7AsUekSnmZnVqVKaks4EXouI+4CnKxxPVbXVh+AnvJlZFpWSGN4HzpK0F7AAmB8Rz1Y2LDMzK8bQoUPp3bs33bp1Y6uttmLevHlll9nuxBARl0t6EPgLMBo4DKjLxOBlt82sK3jooYfo27dvxcprd2KQdBnQDZhPUlt4uGLR1ICTgJlZvlJqDBdJ2hnYHzhB0u4R8ZXKh9bx2uxj8HhWMyvSo7/6C+8uXl3RMvvu2ot/+Pyere4jiaOOOgpJfPWrX2XKlCllH7fUeQxfBf4rIup6rSRwjcHM6tvcuXMZMGAA77zzDkceeSTDhw/nsMMOK6vMUhPDzcDZkrYFfhER88uKopPxWklm1l5t3dl3lAEDBgCw0047MXHiRJ588smyE0OpS2L8C0lS2Qq4uqwIasxLYphZvVqzZs3mJ7etWbOGP/zhD4waNarsckutMbwC7AHcGRH/q+woasTzFMysnr399ttMnDgRgI0bN3LyySdz9NFHl11uqYnhRWAxcKakH0bEJ8qOpBNxv4OZ1YPddtuNBQsWVLzcUhPDnsAyYBrJhLe65KYiM7MtldrHMJxkUtt5QFFjoyTdLOkdSS+0sH28pA8kzU9fF5UYW7u02tHsvGFmGVRqYugDXACcD6wr8je3Am01fj0aEaPT12UlxlY09zGYmW2p1Kaky4DhEbFQ0qZifhARj0gaWuLxOkRLy267i8HMsqyoGoOkbpKWSvongIhoiIgH0vcXVjCegyUtkHSPpJEVLLdF7mg2M8tXVI0hIhrTvoHdOzCWZ4AhEbFa0jHATJIhsVuQNIW0b2Pw4NKfLOolMczMttSePoaPAudLmidpVvq6s1KBRMTKiFidvp8NdJdUcLnAiJgWEeMiYly/fv3KOq5nOZtZPVuxYgWTJk1i+PDhjBgxgscff7zsMtvTx3Bw+ueY9AUVHLcjqT/wdkSEpANIktbySpVfUAvRu3nJzOrFN77xDY4++mjuuOMO1q9fz9q1a8susz2JYVg5B5I0HRgP9JXUAFwMdAeIiBuASSTrL20EPgROiioMG3ISMLN6tXLlSh555BFuvfVWAHr06EGPHj3KLrfoxBARb5RzoIiY3Mb2a4FryzlGe/nRnmZWKQ/dOo133ni1omXuNGQ3Dj+95alir776Kv369eOMM85gwYIFjB07lqlTp7LtttuWddxS5zF0aa5FmFk92LhxI8888wxnn302zz77LNtuuy1XXHFF2eWWOo+hS/CoIzOrlNbu7DvKoEGDGDRoEAceeCAAkyZNqkhiaHeNQdJnyz5qJ+Jlt82sXvXv359dd92VhQsXAvDggw+y9957l11uKTWG7wF3lX3kTsB9CGZW76655hpOOeUU1q9fz2677cYtt9xSdpmlJIYu0QDfuKmRR998lL133DK7em6DmdWL0aNHM2/evIqWWUrnc5e4zV66ZikAPT5S/tAuM7OuJLOjkpr6DybtOanNfczMsiSziaGJm43MzPKVkhjerngUtdBKZcDzGMwsy9qdGCLiyI4IpFacBMzM8mW2KamY/gMPZzWzLMpsYjAzq3cLFy5k9OjRm1/bbbcdV111VdnllrQkhqRzI+LK9P1eEbGw7EiqrLUag5uXzKwe7LXXXsyfPx+AxsZGBg4cyMSJE8sut12JQVIf4MfAcEnrgOeAM4Ezyo6kRjwqycy6ggcffJDdd9+dIUOGlF1WuxJDRKwAzpD0GeAt4Cjgt2VHUQPuPzCzSlpx1yusX7KmomX2GLAtfT5b3BOVZ8yYweTJrT7doGil9jF8imTY6kFAXY9SKths5EqEmdWR9evXM2vWLE488cSKlFfqstt9gAuA80makuqOZzWbWSUVe2ffEe655x7GjBnDzjvvXJHySk0MlwHDI2KhpE0ViaRGWutodvIws3owffr0ijUjQYlNSRHREBEPpO8vrFg0VeSLvpl1BWvXruX+++/n+OOPr1iZJSUGSddJujV9f1TFoqmBQqOSPFzVzOrFRz/6UZYvX872229fsTJL7XxeDzQ99fqICsVSXa4wmJkVVGpiWAtsL6k7MLiC8VRNU1NSq30MHtJqZhlUaufze8CHwHXA3MqFUwNuNTIzy9OuGoOkPpJuAU5Iv7oNGFfxqKqgtdqAZ0ObWZa1e+azpCuAocC7wL7U6cznJu5oNjPLV0pT0pnAaxFxH/B0heOpmqKW3XYPtZllUCmdz+8DZ0m6StIZkvavdFDVVKjG4FqEmdWLH//4x4wcOZJRo0YxefJk1q1bV3aZpTzB7XLgK8AlwGvAYWVHUQOuDZhZvXvzzTe5+uqrmTdvHi+88AKNjY3MmDGj7HLbnRgkXQYcR7J43psRMbXI390s6R1JL7SwXZKulrRI0nOSxrQ3tlK01tHs4apm1tlt3LiRDz/8kI0bN7J27VoGDBhQdpnt7mOIiIskXUSSVE6QtHtEfKWIn94KXEsykqmQCcAe6etA4Cfpnx3CF30zq6R77rmHt956q6Jl9u/fnwkTJrS4feDAgZx33nkMHjyYbbbZhqOOOoqjjip/MYpSJ7jdDIwAdgSuL+YHEfEIyfyHlhwH3BaJJ4A+knYpMb6iuY/BzOrV+++/z5133slrr73GkiVLWLNmDbfffnvZ5ZY6we1fSJbF2AqYSmX6GQYCi3M+N6TfLW2+o6QpwBSAwYPrcuK1mXUxrd3Zd5QHHniAYcOG0a9fPwCOP/54HnvsMU499dSyyi21xvAK0BO4MyIq1flc6Da9YHtPREyLiHERMa7pP0jpB3XtwMzq0+DBg3niiSdYu3YtEcGDDz7IiBEjyi631MTwIjAHOFPSU2VHkWgAds35PAhYUqGyt+BRSWZW7w488EAmTZrEmDFj2Geffdi0aRNTpkwpu9xSm5J2J5nPMC39sxJmAV+XNIOk0/mDiNiiGaniCj3Z00timFmduPTSS7n00ksrWmapiWFxRMxJO4ffKeYHkqYD44G+khqAi4HuABFxAzAbOAZYRLJ66xklxlYUj0oyMyus1MRwtKS/kKyu+gZJZ3SrIqLV585FcqX+WonxlMyP9jQzy1dqH0Mf4ALgfODvFYuminzRN7NK6OytD6XEV2piuIxkRNJCoLHEMmqqmAf1mJm1pmfPnixfvrzTJoeIYPny5fTs2bNdvyuqKUlSN5JRQ/8eETdGREP6mYi4sL3BdibuaDazUg0aNIiGhgaWLVtW61Ba1LNnTwYNGtSu3xSVGCKiMV3jaPdSAuuUikjwnfUuwMw6h+7duzNs2LBah1Fx7el8/ihwvqQj+e/5BRERx1U+rOrxkhhmZvnakxgOTv8ck76gqPvuzsmdz2ZmhbUnMXS9+hJtLLvt5GFmGdRmYpDUtEpdwatkzvYVEbGyUoF1NPcfmJkVVkyN4WckSaG1hvcged5CS89aqCseqWRmWdZmYoiIw6sRSLW5mcjMrLBSJ7h1GV4Sw8wsX2YTgy/6ZmaFZTYxNCnUn+B5DGaWZZlNDB6VZGZWWGYTQ5NW+xicPMwsgzKfGArxcFUzy7LMJgYvu21mVlhmE8NmzgtmZnkymxjcf2BmVlhmE0MTNyWZmeXLbGLwBDczs8IymxiatLrstpubzCyDMpsYfNE3Mysss4mhiR/taWaWL7OJwX0MZmaFZTYxNPGy22Zm+TKfGMzMLF9VE4OkoyUtlLRI0oUFto+X9IGk+enroirEVNR3ZmZZUcwznytCUjfgOuBIoAF4StKsiHip2a6PRsSxHR2PRyWZmRVWzRrDAcCiiHg1ItYDM4Djqnj8dnMfg5llUTUTw0Bgcc7nhvS75g6WtEDSPZJGFipI0hRJ8yTNW7ZsWUnBtHbR93BVM8uyaiaGQlfb5lfnZ4AhEbEfcA0ws1BBETEtIsZFxLh+/fqVFIyX3TYzK6yaiaEB2DXn8yBgSe4OEbEyIlan72cD3SX17cigvCSGmVm+aiaGp4A9JA2T1AM4CZiVu4Ok/kqv1JIOSONb3hHB+KJvZlZY1UYlRcRGSV8H7gO6ATdHxIuSzkq33wBMAs6WtBH4EDgpOvgK7iUxzMzyVS0xwObmodnNvrsh5/21wLVVicUjjszMCsr8zOdW+xicPMwsg7KbGHzNNzMrKLuJIVWwj8FLYphZhmU2MbiZyMyssMwmBjMzKyyzicE1BjOzwjKbGJq4P8HMLF9mE0Mx8+Y8O9rMsiiziaGJZzmbmeXLbGJoddltNy+ZWYZlNjE0cY3BzCyfE4OXxDAzy5PZxOCOZTOzwjKbGJp42W0zs3yZTQxuJjIzKyyziWGzVioHbm4ysyzKbGLwRd/MrLDMJoYm7mMwM8uX2cTgPgYzs8IymxiatFY7cPIwsyzKbGLwkhhmZoVlNjE0cRIwM8uX3cTgViIzs4KymxhSHoFkZpYvs4mh1T4GJwszy7DMJgYzMysss4mhmKGonh1tZlmU3cSQXvQ9KsnMLF9VE4OkoyUtlLRI0oUFtkvS1en25ySN6fCY3J9gZpanaolBUjfgOmACsDcwWdLezXabAOyRvqYAP+moeDyr2cysMFWrHV3SwcAlEfHp9PO3ASLi8px9/gt4OCKmp58XAuMjYmlL5Y4bNy7mzZvX7nhuu/B7vNu9W7t/Z2bWWXzsw+CM//x2Sb+V9HREjCu0bauyomqfgcDinM8NwIFF7DMQyEsMkqaQ1CgYPHhwScFs3bM72/y99YYk1ynMrDPrxvoOKbeaiaHQNbj5tbeYfYiIacA0SGoMpQTzhUvOL+VnZmZdXjU7nxuAXXM+DwKWlLCPmZl1oGomhqeAPSQNk9QDOAmY1WyfWcBp6eikg4APWutfMDOzyqtaU1JEbJT0deA+oBtwc0S8KOmsdPsNwGzgGGARsBY4o1rxmZlZopp9DETEbJKLf+53N+S8D+Br1YzJzMzyZXbms5mZFebEYGZmeZwYzMwsjxODmZnlqdqSGB1F0jLgjRJ/3hd4t4Lh1AOfczb4nLOhnHMeEhH9Cm2o+8RQDknzWlorpKvyOWeDzzkbOuqc3ZRkZmZ5nBjMzCxP1hPDtFoHUAM+52zwOWdDh5xzpvsYzMxsS1mvMZiZWTNODGZmlicTiUHS0ZIWSlok6cIC2yXp6nT7c5LG1CLOSirinE9Jz/U5SY9J2q8WcVZSW+ecs98nJDVKmlTN+DpCMecsabyk+ZJelPT/qh1jpRXxb3t7SXdJWpCec12v0izpZknvSHqhhe2Vv35FRJd+kSzx/QqwG9ADWADs3WyfY4B7SJ4gdxDwp1rHXYVzPgT4WPp+QhbOOWe/OSSr/E6qddxV+HvuA7wEDE4/71TruKtwzt8BfpC+7we8B/SodexlnPNhwBjghRa2V/z6lYUawwHAooh4NSLWAzOA45rtcxxwWySeAPpI2qXagVZQm+ccEY9FxPvpxydInpZXz4r5ewY4B/gN8E41g+sgxZzzycBvI+JvABFR7+ddzDkH0FuSgF4kiWFjdcOsnIh4hOQcWlLx61cWEsNAYHHO54b0u/buU0/aez5nktxx1LM2z1nSQGAicANdQzF/z3sCH5P0sKSnJZ1Wteg6RjHnfC0wguSxwM8D34iITdUJryYqfv2q6oN6akQFvms+RreYfepJ0ecj6XCSxHBoh0bU8Yo556uACyKiMbmZrHvFnPNWwFjgH4FtgMclPRERf+no4DpIMef8aWA+cASwO3C/pEcjYmUHx1YrFb9+ZSExNAC75nweRHIn0d596klR5yNpX+BGYEJELK9SbB2lmHMeB8xIk0Jf4BhJGyNiZlUirLxi/22/GxFrgDWSHgH2A+o1MRRzzmcAV0TSAL9I0mvAcODJ6oRYdRW/fmWhKekpYA9JwyT1AE4CZjXbZxZwWtq7fxDwQUQsrXagFdTmOUsaDPwW+GId3z3mavOcI2JYRAyNiKHAHcA/13FSgOL+bd8J/IOkrSR9FDgQeLnKcVZSMef8N5IaEpJ2BvYCXq1qlNVV8etXl68xRMRGSV8H7iMZ0XBzRLwo6ax0+w0kI1SOARYBa0nuOOpWked8EbAjcH16B70x6nhlyiLPuUsp5pwj4mVJ9wLPAZuAGyOi4LDHelDk3/N3gVslPU/SzHJBRNTtctySpgPjgb6SGoCLge7QcdcvL4lhZmZ5stCUZGZm7eDEYGZmeZwYzMwsjxODmZnlcWIwM7M8TgxmOST1kfTPOZ8HSLqjg471OUkXtbHPf0o6oiOOb9YSD1c1yyFpKHB3RIyqwrEeA/5na2PsJQ0BfhoRR3V0PGZNXGMwy3cFsHv6/IIfShratA6+pNMlzUzX+n9N0tclnSvpWUlPSNoh3W93Sfemi9Y9Kml484NI2hP4e0S8K6l3Wl73dNt2kl6X1D0i3gB2lNS/iv8NLOOcGMzyXQi8EhGjI+J/F9g+imQp6wOA7wFrI2J/4HGgaeXSacA5ETEWOA+4vkA5nwSeAYiIVcDDwGfSbScBv4mIDennZ9L9zaqiyy+JYVZhD6UX8lWSPgDuSr9/HthXUi+ShyD9OmcF160LlLMLsCzn843A+cBMkiUNvpKz7R1gQKVOwKwtTgxm7fP3nPebcj5vIvn/6SPAiogY3UY5HwLbN32IiLlps9WngG7N1jPqme5vVhVuSjLLtwroXeqP0zX/X5N0Imx+Hm+h52m/DHy82Xe3AdOBW5p9vydQtwvfWf1xYjDLkT6XYq6kFyT9sMRiTgHOlLQAeJHCjxh9BNhf+U8M+gXwMZLkAEDaIf1xYF6JsZi1m4ermtWIpKnAXRHxQPp5EnBcRHwxZ5+JwJiI+PcahWkZ5D4Gs9r5PsmDc5B0DTCBZF39XFsBP6pyXJZxrjGYmVke9zGYmVkeJwYzM8vjxGBmZnmcGMzMLI8Tg5mZ5fn/MS0/NwcCfiYAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAElCAYAAADgCEWlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjhElEQVR4nO3de7xVdZ3/8dc7LmKCkoIhIBdNBUFFIFBzDJ2fjpj9DMUSNZOcSKecGvOnTjNp2m/UpsnESzHkLbMfVFaKhpqK/TTUFBW8RuEtjoAgityFc/jMH2thex/3gX32Xmfvs89+Px+P/Th7r/Vd3/VZnMP+rO/3u9Z3KSIwMzPb6kPVDsDMzNoXJwYzM8vjxGBmZnmcGMzMLI8Tg5mZ5XFiMDOzPE4M1mFJ+rak29L3AyStldSphHqmSfpW9hGatU9ODNZuSXpN0v9qtuxMSX9obV0R8deI6B4RTSVse3ZEfKeYspJukfR/W7uPrJT672OWy4nBrEZI6twR9mHtnxOD1TRJfSX9StIKSa9K+ucWyg2SFFu/+NLtZkl6W9IiSV/axj7ebwVIGiepQdI3JC2XtFTS5HTdFOA04IK02+qu7cUoaUdJP5H0jqSXJF0gqSFn/WuSLpT0LLBOUmdJF0l6WdIaSS9KmpCWHQpMAw5N978qXb6LpFvT/b8u6d8lfShdd6akuZJ+IOlt4Nul/i6s4/DZgdWs9MvtLuBOYBLQH3hA0sKIuG87m88AXgD6AkOA+yW9EhEPFrHrPsAuQD/gaOB2SXdExHRJhwENEfHvRcZ4CTAI2AvYCZhdYH+TgE8Bb0VEo6SXgb8DlgEnA7dJ+lhEvCTpbOAfI+LwnO2vTePdC9gN+B2wFLgxXT8WmAnsDnQp4vitg3OLwdq7OySt2voCfpiz7uNA74i4LCI2RcQrwI+BU7ZVoaQ9gcOBCyNiY0TMB24APl9kTJuByyJic0TMBtYC+7VQdnsxfha4PCLeiYgG4JoCdVwTEYsjYgNARPwyIpZExJaI+DnwF2BMC8faCfgc8K8RsSYiXgO+3+xYl0TEtRHRuHUfVt/cYrD27jMR8cDWD5LOBP4x/TgQ6Lu1yyTVCXhkO3X2Bd6OiDU5y14HRhcZ08qIaMz5vB7o3kLZ7cXYF1icsy73fcFlks4AziNpaZDuu1cL++8FdCU5vq1eJ2ntbGufVsecGKyWLQZejYh9WrndEmBXST1yksMA4I0MYmo+XfH2YlxK0r30Yvp5z23VKWkgSYvj74HHIqJJ0nxALez/LZIWzsCcfTQ/Vk+xbHnclWS17AlgdTo4u6OkTpKGS/r4tjaKiMXAo8AVkrpJOhA4C/hZBjG9SdKXX2yMvwD+VdJHJPUDvrqd+nci+SJfAZAOfA9vtv/+kroCpJfn/gL4D0k90sRyHnBbeYdpHZkTg9Ws9Evv08AI4FWSs+MbSAZat2cSSVfMEuA3wCURcX8GYd0I7J+OidxRRIyXAQ3pugeA24H3Wqo8Il4kGSN4jCQJHADMzSkyh2RQfZmkt9Jl5wLrgFeAPwD/D7ip3AO1jkt+UI9Z+yHpHOCUiPhktWOx+uUWg1kVSdpD0ickfUjSfsA3SFowZlXjwWez6uoK/DcwGFhFcj/BD7e1gVlbc1eSmZnlcVeSmZnlcWKwulNo1taOovmcUGalcGKwDin9clyXTib3hqSrVMKzGDKI4WOV3KdZFpwYrCM7KCK6k9wlfCrQ4gyqZvY3TgzW4UXEn0jmJhrefJ2kMZIeS29IWyrpuq13DafrQ9LZkv6STo19vSTlrP9iOl32O5LuS+8sRtLDaZEFaavlc5J6Sbo73dfbkh7ZOv11gbgOk/SkpHfTn4flrPu9pO+k02WvkfQ7SR+YK0nSyZKearbsG5LuaN2/oNUbJwbr8CTtTzJN9TMFVjcB/0Iy2dyhJK2Lf2pW5niSWVIPIpkN9R/Sej8DfBM4EehNknxmAETEEem2B6VPjvs5yT0KDWnZj6bbfuCyQEm7Ar8lmWl1N+Aq4LeSdsspdiowmWSq7K7A+QWObRYwOH1Ow1anAz8tUNbsfR0iMUi6SclDU57PoK4R6RnkC5KelfS5nHWDJf0xPXv8ee6ZpbVLT0t6h+R5CDcANzcvEBFPRcTj6ZTTr5HcU9D8ruMrI2JVRPwVeIhkeguALwNXRMRL6WyrlwMjtrYaCtgM7AEMTKfsfiQKXy/+KeAvEfHTNK4ZwJ9IptbY6uaI+HM6TfYvcmLKPbb3gJ+TJAMkDSOZBuTuFuIzAzpIYgBuAY7NqK71wBkRMSyt82pJPdN13wV+kM6U+Q7JxGvWfo2MiI9ExN4R8e8RsaV5AUn7pt07yyStJvlyb94tsyznfe4U2wOBqTnPinibZJbTfhT2PWAR8DtJr0i6qIVyfcmfJhs+OFV2SzE19xPg1LT76/PAL9KEYdaiDpEYIuJhkv+U75O0t6R7JT2V9uUOKbKuP0fEX9L3S4DlQO/0P9ZRJJOcQfIf7jNZHYNVzY9Izsb3iYidSbp3tO1N3rcY+HJE9Mx57RgRjxYqnD4o5xsRsRfJ2f95kv6+QNElJEknV0nTgkfE48Amkq60U3E3khWhQySGFkwHzo2IUST9r62eZkDSGJL+25dJ+npX5TygpYGWzwytdvQAVgNr05OHc1qx7TSSKbOHwfvPVj45Z33eFNySjpf0sfQkYzXJ+EZTgXpnA/tKOlXJM54/B+xP6V1AtwLXAY0R8YcS67A60iFvgpHUHTgM+GXOBSQ7pOtOJJnquLk3IuIfcurYg+Ts6gsRsSX3SpQcnk+k9p1PchJxAcng9M9JWobbFRG/Sf/WZqbjCu8C9wO/TIt8G/iJpB2BKSQnEteRDD6/A/wwIn5foN6Vko4HppK0aBYBx0fEW83LFumnwHfSl9l2dZi5kiQNAu6OiOGSdgYWRsQeJda1M/B7koHFX6bLRPJwlD7pA9kPBb6dm0zM2qM0MS0nGXP5S7XjsfavQ3YlRcRq4NWtzXolDipm2/RKo98At25NCmmdQXJFysR00ReAOzMN3KxtnAM86aRgxeoQLQZJM4BxJFeTvAlcQvIkqx+RXB7YBZgZEYW6kJrXdTrJZY0v5Cw+MyLmS9qLZFrkXUm6HU73FR7Wnkl6jWQw/TMRUeg+DrMP6BCJwczMstMhu5LMzKx0NX9VUq9evWLQoEHVDsPMrKY89dRTb0VE70Lraj4xDBo0iHnz5lU7DDOzmiKp+d3173NXkpmZ5XFiMDOzPE4MZmaWp+bHGMzMqmXz5s00NDSwcePGaofSom7dutG/f3+6dOlS9DZODGZmJWpoaKBHjx4MGjSIwtOpVVdEsHLlShoaGhg8eHDR27krycysRBs3bmS33XZrl0kBQBK77bZbq1s0TgxmZmVor0lhq1Liq9vEEBHM+NMMnlz2ZLVDMTNrV+o2MSxbt4zL/3g5X7zvi9UOxczq2GGHHVZw+Zlnnsntt99ecF1bq9vE0BSFHpxlZlZZjz5a8EmwVeWrkszMqqh79+6sXbuWiODcc89lzpw5DB48mGrOfF23LYbwUznNrB35zW9+w8KFC3nuuef48Y9/XNWWRN0mBjOz9uThhx9m0qRJdOrUib59+3LUUUU9erxNODGYmbUT7eXSVycGM7N24IgjjmDmzJk0NTWxdOlSHnrooarFUr+Dzx5iMLN2ZMKECcyZM4cDDjiAfffdl09+8pNVi6V+E4OZWTuwdu1aIOlGuu6666ocTcJdSWZmlseJwczM8tRtYvB9DGZmhVUsMUjaU9JDkl6S9IKkrxUoM07Su5Lmp6+LKxWfmZklKjn43Ah8IyKeltQDeErS/RHxYrNyj0TE8RWMy8zMclSsxRARSyPi6fT9GuAloF+l9m9mZsWpyhiDpEHAwcAfC6w+VNICSfdIGtZWMXiMwcw6gi9+8YvsvvvuDB8+PLM6K54YJHUHfgV8PSJWN1v9NDAwIg4CrgXuaKGOKZLmSZq3YsWKNo3XzKw9O/PMM7n33nszrbOiiUFSF5Kk8LOI+HXz9RGxOiLWpu9nA10k9SpQbnpEjI6I0b17927zuM3M2qsjjjiCXXfdNdM6Kzb4rGR2qBuBlyLiqhbK9AHejIiQNIYkca1si3iqOde5mXU8l971Ai8uad4JUp79++7MJZ9usx71FlXyqqRPAJ8HnpM0P132TWAAQERMAyYC50hqBDYAp4S/wc3MKqpiiSEi/gBsc07ZiLgOaB+ThZiZtUI1zuzbSt3e+WxmZoXVbWLw5apm1hFMmjSJQw89lIULF9K/f39uvPHGsuv0tNtmZjVsxowZmddZty0GMzMrzInBzMzy1G1i8BiDmVlhdZsYzMysMCcGMzPL48RgZmZ56jcxeIjBzGrc4sWLOfLIIxk6dCjDhg1j6tSpmdTr+xjMzGpU586d+f73v8/IkSNZs2YNo0aN4uijj2b//fcvq976bTGYmdW4PfbYg5EjRwLQo0cPhg4dyhtvvFF2vXXbYvDlqmaWqXsugmXPZVtnnwNg/JVFFX3ttdd45plnGDt2bNm7dYvBzKzGrV27lpNOOomrr76anXfeuez66rbFYGaWqSLP7LO2efNmTjrpJE477TROPPHETOp0i8HMrEZFBGeddRZDhw7lvPPOy6zeuk0MfjCcmdW6uXPn8tOf/pQ5c+YwYsQIRowYwezZs8uu111JZmY16vDDD2+Tk9y6bTGYmVlhTgxmZpanbhOD72MwMyusbhODmZkV5sRgZmZ5nBjMzCxP3SYGjzGYWa3buHEjY8aM4aCDDmLYsGFccsklmdTr+xjMzGrUDjvswJw5c+jevTubN2/m8MMPZ/z48RxyyCFl1Vu3LQYzs1onie7duwPJnEmbN29GUtn11m2LwVNimFmWvvvEd/nT23/KtM4huw7hwjEXbrNMU1MTo0aNYtGiRXzlK1+prWm3Je0p6SFJL0l6QdLXCpSRpGskLZL0rKSRlYrPzKwWderUifnz59PQ0MATTzzB888/X3adlWwxNALfiIinJfUAnpJ0f0S8mFNmPLBP+hoL/Cj9aWbWrm3vzL6t9ezZk3HjxnHvvfcyfPjwsuqqWIshIpZGxNPp+zXAS0C/ZsVOAG6NxONAT0l7VCpGM7NasmLFClatWgXAhg0beOCBBxgyZEjZ9VZljEHSIOBg4I/NVvUDFud8bkiXLW22/RRgCsCAAQPaLE4zs/Zs6dKlfOELX6CpqYktW7bw2c9+luOPP77seiueGCR1B34FfD0iVjdfXWCTD4wSR8R0YDrA6NGjPYpsZnXpwAMP5Jlnnsm83operiqpC0lS+FlE/LpAkQZgz5zP/YEllYjNzMwSlbwqScCNwEsRcVULxWYBZ6RXJx0CvBsRS1soa2ZmbaCSXUmfAD4PPCdpfrrsm8AAgIiYBswGjgMWAeuByW0VjKfEMDMrrGKJISL+QOExhNwyAXylMhGZmVkhnhLDzMzyODGYmVmeuk0MnivJzDqKpqYmDj744EzuYYAixhgkFXsH2aoC9yWYmVkbmzp1KkOHDmX16my+gosZfP4JyU1m2xo4DuAW4NYMYjIzsyI1NDTw29/+ln/7t3/jqqtauhOgdbabGCLiyObLJPWJiGWZRFAlvlzVzLK07PLLee+lbKfd3mHoEPp885vbLPP1r3+d//zP/2TNmjWZ7bfUMYYzMovAzMxKcvfdd7P77rszatSoTOst9T6GEyStB+6PiIVZBmRmVou2d2bfFubOncusWbOYPXs2GzduZPXq1Zx++uncdtttZdVbaovhRJK7kydIuqGsCMzMrCRXXHEFDQ0NvPbaa8ycOZOjjjqq7KQAJbYYIuJN4N70VZM8xmBmVlhJLQZJ10u6JX1/TKYRmZlZq40bN4677747k7pK7UraBLySvj8qk0jMzKxdKDUxrAd2SZ+v4EeomZl1IKVelfQ2sAG4HpibXTgV5CEGM7OCWtVikNRT0s3ASemiW4HRmUdlZmZV06oWQ0SsknQlMAh4CzgQKPSITjMzq1GldCWdBbwaEfcBT2Ucj5mZVVkpieEd4GxJ+wELgPkR8Uy2YbU938dgZh3BoEGD6NGjB506daJz587Mmzev7DpbnRgi4gpJDwJ/BkYARwA1lxjMzDqKhx56iF69emVWX6sTg6TLgE7AfJLWwu8zi8bMzKqulBbDxZI+ChwMnCRp74j4UvahtS0/wc3MsvTIL/7MW4vXZlpnrz2783ef3XebZSRxzDHHIIkvf/nLTJkypez9lnofw5eB/46Imp0rycysI5g7dy59+/Zl+fLlHH300QwZMoQjjjiirDpLTQw3AedI2gn4WUTMLysKM7Mat70z+7bSt29fAHbffXcmTJjAE088UXZiKHVKjH8mSSqdgWvKisDMzEqybt2695/ctm7dOn73u98xfPjwsusttcXwMrAPcGdE/EvZUVSBL1c1s1r35ptvMmHCBAAaGxs59dRTOfbYY8uut9TE8AKwGDhL0vci4uNlR2JmZq2y1157sWDBgszrLTUx7AusAKaT3PBmZmYdRKljDENIbmo7Hyjq2ihJN0laLun5FtaPk/SupPnp6+ISYzMzszKUmhh6AhcCFwAbi9zmFmB7nV+PRMSI9HVZibEVxWMMZmaFldqVdBkwJCIWStpSzAYR8bCkQSXuz8zMKqSoFoOkTpKWSvpHgIhoiIgH0vcXZRjPoZIWSLpH0rAM6zUzsyIV1WKIiKZ0bGDvNozlaWBgRKyVdBxwB8klsR8gaQrp2MaAAX6yqJlZllozxvBh4AJJ8yTNSl93ZhVIRKyOiLXp+9lAF0kFpwuMiOkRMToiRvfu3bvU/ZUerJlZO7Fq1SomTpzIkCFDGDp0KI899ljZdbZmjOHQ9OfI9AUZPjlZUh/gzYgISWNIktbKrOo3M+uIvva1r3Hsscdy++23s2nTJtavX192na1JDIPL2ZGkGcA4oJekBuASoAtAREwDJpLMv9QIbABOCZ/Wm5m1aPXq1Tz88MPccsstAHTt2pWuXbuWXW/RiSEiXi9nRxExaTvrrwOuK2cfZmbV8tAt01n++iuZ1rn7wL048syWbxV75ZVX6N27N5MnT2bBggWMGjWKqVOnstNOO5W131LvYzAzsyprbGzk6aef5pxzzuGZZ55hp5124sorryy73lLvYzAzsxzbOrNvK/3796d///6MHTsWgIkTJ2aSGFrdYpD06bL3amZmZevTpw977rknCxcuBODBBx9k//33L7veUloM/wHcVfaeq8xTYphZR3Dttddy2mmnsWnTJvbaay9uvvnmsussJTGo7L2amVkmRowYwbx58zKts5TBZ59qm5l1YL4qyczM8tRtYvC9c2ZmhZWSGN7MPAozM2s3Wp0YIuLotgjEzMzah7rtSjIzs8LqNjH4PgYzq3ULFy5kxIgR77923nlnrr766rLrLWlKDEnnRcRV6fv9ImJh2ZGYmVmr7LfffsyfPx+ApqYm+vXrx4QJE8qut1WJQVJP4AfAEEkbgWeBs4DJZUdiZmYle/DBB9l7770ZOHBg2XW1KjFExCpgsqRPAcuAY4Bflx1FFfhyVTPL0qq7XmbTknWZ1tm17070/HRxT1SeOXMmkyZt8+kGRSt1jOGTJJetHgL4KiUzsyratGkTs2bN4uSTT86kvlKn3e4JXAhcQNKVZGZW14o9s28L99xzDyNHjuSjH/1oJvWVmhguA4ZExEJJWzKJxMzMSjJjxozMupGgxK6kiGiIiAfS9xdlFk0F+XJVM+sI1q9fz/3338+JJ56YWZ0lJQZJ10u6JX1/TGbRmJlZq3z4wx9m5cqV7LLLLpnVWerg8yZg61Ovj8ooFjMzawdKTQzrgV0kdQEGZBiPmZlVWamDz28DG4DrgbnZhWNmZtXWqhaDpJ6SbgZOShfdCozOPCozM6uaVt/5LOlKYBDwFnAgNXrns5mZFVZKV9JZwKsRcR/wVMbxmJlZlZUy+PwOcLakqyVNlnRw1kFVgudKMrOO4Ac/+AHDhg1j+PDhTJo0iY0bN5ZdZylPcLsC+BLwbeBV4IiyozAzs1Z74403uOaaa5g3bx7PP/88TU1NzJw5s+x6W50YJF0GnEAyed4bETG1yO1ukrRc0vMtrJekayQtkvSspJGtjc3MrN40NjayYcMGGhsbWb9+PX379i27zlaPMUTExZIuJkkqJ0naOyK+VMSmtwDXkVzJVMh4YJ/0NRb4UfqzTXhKDDPL0j333MOyZcsyrbNPnz6MHz++xfX9+vXj/PPPZ8CAAey4444cc8wxHHNM+ZNRlHqD203AUGA34IfFbBARD5Pc/9CSE4BbI/E40FPSHiXGZ2bW4b3zzjvceeedvPrqqyxZsoR169Zx2223lV1vqTe4/TPJtBidgalkM87QD1ic87khXba0eUFJU4ApAAMG+MZrM6u+bZ3Zt5UHHniAwYMH07t3bwBOPPFEHn30UU4//fSy6i21xfAy0A24MyKyGnxWgWUF+3siYnpEjI6I0Vv/QczM6s2AAQN4/PHHWb9+PRHBgw8+yNChQ8uut9TE8AIwBzhL0pNlR5FoAPbM+dwfWJJR3R/gMQYzq3Vjx45l4sSJjBw5kgMOOIAtW7YwZcqUsusttStpb5L7GaanP7MwC/iqpJkkg87vRsQHupHMzOxvLr30Ui699NJM6yw1MSyOiDnp4PDyYjaQNAMYB/SS1ABcAnQBiIhpwGzgOGARyeytk0uMzczMylBqYjhW0p9JZld9nWQwepsiYpvPnYvkVuSvlBiPmZllpNQxhp7AhcAFwHuZRVNBnhLDzLLQ3r9LSomv1MRwGckVSQuBphLrMDOrad26dWPlypXtNjlEBCtXrqRbt26t2q6oriRJnUiuGvpWRNwQEQ3pZyLiotYGa2bWEfTv35+GhgZWrFhR7VBa1K1bN/r379+qbYpKDBHRlM5xtHcpgZmZdURdunRh8ODB1Q4jc60ZfP4wcIGko/nb/QURESdkH1bb830MZmaFtSYxHJr+HJm+oIU7k83MrHa1JjF0vPaSmZl9wHYTg6Sts9QVbB3krF8VEauzCqzNua1jZlZQMS2Gn5B8jRaa5G6rIHneQkvPWjAzsxqx3cQQEUdWIhAzM2sfSr3BzczMOqi6TQy+XNXMrLC6TQxmZlaYE4OZmeVxYjAzszx1mxg8xmBmVljdJgYzMyvMicHMzPLUbWJorw/WMDOrtrpNDGZmVpgTg5mZ5XFiMDOzPHWbGHy5qplZYXWbGMzMrDAnBjMzy+PEYGZmeZwYzMwsT0UTg6RjJS2UtEjSRQXWj5P0rqT56eviSsZnZmbFPfM5E5I6AdcDRwMNwJOSZkXEi82KPhIRx1cqLjMzy1fJFsMYYFFEvBIRm4CZwAkV3L+ZmRWhkomhH7A453NDuqy5QyUtkHSPpGGFKpI0RdI8SfNWrFhRUjCeK8nMrLBKJgYVWNb82/lpYGBEHARcC9xRqKKImB4RoyNidO/evbON0syszlUyMTQAe+Z87g8syS0QEasjYm36fjbQRVKvyoVoZmaVTAxPAvtIGiypK3AKMCu3gKQ+kpS+H5PGt7ItgvGUGGZmhVXsqqSIaJT0VeA+oBNwU0S8IOnsdP00YCJwjqRGYANwSngwwMysoiqWGOD97qHZzZZNy3l/HXBdJWMyM7N8vvPZzMzy1G1icA+VmVlhdZsYzMysMCcGMzPL48RgZmZ56jYx+D4GM7PC6jYxmJlZYU4MZmaWx4nBzMzy1G1i8BiDmVlhdZsYzMysMCcGMzPLU7+JwT1JZmYF1W9iMDOzgpwYzMwsjxODmZnlqdvE4MtVzcwKq9vEYGZmhTkxmJlZHicGMzPLU7eJwWMMZmaF1W1iMDOzwpwYzMwsjxODmZnlqdvEEOExBjOzQuo2MZiZWWFODGZmlqduE4MvVzUzK6yiiUHSsZIWSlok6aIC6yXpmnT9s5JGVjI+MzOrYGKQ1Am4HhgP7A9MkrR/s2LjgX3S1xTgR5WKz8zMEp0ruK8xwKKIeAVA0kzgBODFnDInALdGcsnQ45J6StojIpZmHcyb0+YxuctpAFz1rSuzrt7MrM19ZEMw+b/+NfN6K5kY+gGLcz43AGOLKNMPyEsMkqaQtCgYMGBAScHs0K0LO76nkrY1M2sPOrGpTeqtZGIo9C3cfAS4mDJExHRgOsDo0aNLGkX+3LcvKGUzM7MOr5KDzw3Anjmf+wNLSihjZmZtqJKJ4UlgH0mDJXUFTgFmNSszCzgjvTrpEODdthhfMDOzllWsKykiGiV9FbgP6ATcFBEvSDo7XT8NmA0cBywC1gOTKxWfmZklKjnGQETMJvnyz102Led9AF+pZExmZpavbu98NjOzwpwYzMwsjxODmZnlcWIwM7M8qvUH1khaAbxe4ua9gLcyDKcW+Jjrg4+5PpRzzAMjonehFTWfGMohaV5EjK52HJXkY64PPub60FbH7K4kMzPL48RgZmZ56j0xTK92AFXgY64PPub60CbHXNdjDGZm9kH13mIwM7NmnBjMzCxPXSQGScdKWihpkaSLCqyXpGvS9c9KGlmNOLNUxDGflh7rs5IelXRQNeLM0vaOOafcxyU1SZpYyfjaQjHHLGmcpPmSXpD0/ysdY9aK+NveRdJdkhakx1zTszRLuknScknPt7A++++viOjQL5Ipvl8G9gK6AguA/ZuVOQ64h+QJcocAf6x23BU45sOAj6Tvx9fDMeeUm0Myy+/Easddgd9zT5Lnqg9IP+9e7bgrcMzfBL6bvu8NvA10rXbsZRzzEcBI4PkW1mf+/VUPLYYxwKKIeCUiNgEzgROalTkBuDUSjwM9Je1R6UAztN1jjohHI+Kd9OPjJE/Lq2XF/J4BzgV+BSyvZHBtpJhjPhX4dUT8FSAiav24iznmAHpIEtCdJDE0VjbM7ETEwyTH0JLMv7/qITH0AxbnfG5Il7W2TC1p7fGcRXLGUcu2e8yS+gETgGl0DMX8nvcFPiLp95KeknRGxaJrG8Uc83XAUJLHAj8HfC0itlQmvKrI/Purog/qqRIVWNb8Gt1iytSSoo9H0pEkieHwNo2o7RVzzFcDF0ZEU3IyWfOKOebOwCjg74EdgcckPR4Rf27r4NpIMcf8D8B84Chgb+B+SY9ExOo2jq1aMv/+qofE0ADsmfO5P8mZRGvL1JKijkfSgcANwPiIWFmh2NpKMcc8GpiZJoVewHGSGiPijopEmL1i/7bfioh1wDpJDwMHAbWaGIo55snAlZF0wC+S9CowBHiiMiFWXObfX/XQlfQksI+kwZK6AqcAs5qVmQWckY7uHwK8GxFLKx1ohrZ7zJIGAL8GPl/DZ4+5tnvMETE4IgZFxCDgduCfajgpQHF/23cCfyeps6QPA2OBlyocZ5aKOea/krSQkPRRYD/glYpGWVmZf391+BZDRDRK+ipwH8kVDTdFxAuSzk7XTyO5QuU4YBGwnuSMo2YVecwXA7sBP0zPoBujhmemLPKYO5RijjkiXpJ0L/AssAW4ISIKXvZYC4r8PX8HuEXScyTdLBdGRM1Oxy1pBjAO6CWpAbgE6AJt9/3lKTHMzCxPPXQlmZlZKzgxmJlZHicGMzPL48RgZmZ5nBjMzCyPE4NZDkk9Jf1Tzue+km5vo319RtLF2ynzX5KOaov9m7XEl6ua5ZA0CLg7IoZXYF+PAv97W9fYSxoI/DgijmnreMy2covBLN+VwN7p8wu+J2nQ1nnwJZ0p6Y50rv9XJX1V0nmSnpH0uKRd03J7S7o3nbTuEUlDmu9E0r7AexHxlqQeaX1d0nU7S3pNUpeIeB3YTVKfCv4bWJ1zYjDLdxHwckSMiIj/U2D9cJKprMcA/wGsj4iDgceArTOXTgfOjYhRwPnADwvU8wngaYCIWAP8HvhUuu4U4FcRsTn9/HRa3qwiOvyUGGYZeyj9Il8j6V3grnT5c8CBkrqTPATplzkzuO5QoJ49gBU5n28ALgDuIJnS4Es565YDfbM6ALPtcWIwa533ct5vyfm8heT/04eAVRExYjv1bAB22fohIuam3VafBDo1m8+oW1rerCLclWSWbw3Qo9SN0zn/X5V0Mrz/PN5Cz9N+CfhYs2W3AjOAm5st3xeo2YnvrPY4MZjlSJ9LMVfS85K+V2I1pwFnSVoAvEDhR4w+DBys/CcG/Qz4CElyACAdkP4YMK/EWMxazZermlWJpKnAXRHxQPp5InBCRHw+p8wEYGREfKtKYVod8hiDWfVcTvLgHCRdC4wnmVc/V2fg+xWOy+qcWwxmZpbHYwxmZpbHicHMzPI4MZiZWR4nBjMzy+PEYGZmef4He7NIVubMcfAAAAAASUVORK5CYII=\n", "text/plain": [ "
    " ] diff --git a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb index 181cd0237..c6bb630b2 100644 --- a/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb +++ b/examples/rmvs_swifter_comparison/9pl_18tp_encounters/swiftest_rmvs_vs_swifter_rmvs.ipynb @@ -622,7 +622,7 @@ " 1.17040422e-11])\n", "Coordinates:\n", " id int64 2\n", - " * time (d) (time (d)) float64 0.0 11.0 22.0 ... 3.63e+03 3.641e+03 3.652e+03
    • id
      ()
      int64
      2
      array(2)
    • time (d)
      (time (d))
      float64
      0.0 11.0 ... 3.641e+03 3.652e+03
      array([   0.,   11.,   22., ..., 3630., 3641., 3652.])
  • " ], "text/plain": [ "\n", diff --git a/src/util/util_peri.f90 b/src/util/util_peri.f90 index 6cde4cc45..1884728da 100644 --- a/src/util/util_peri.f90 +++ b/src/util/util_peri.f90 @@ -18,59 +18,42 @@ module subroutine util_peri_tp(self, system, param) ! Internals integer(I4B) :: i real(DP) :: e - real(DP), dimension(:), allocatable, save :: vdotr + real(DP), dimension(:), allocatable :: vdotr associate(tp => self, ntp => self%nbody) - if (tp%lfirst) then - if (.not. allocated(vdotr)) allocate(vdotr(ntp)) - if (param%qmin_coord == "HELIO") then - do i = 1, ntp - vdotr(i) = dot_product(tp%xh(:, i), tp%vh(:, i)) - end do - else - do i = 1, ntp - vdotr(i) = dot_product(tp%xb(:, i), tp%vb(:, i)) - end do - end if - where(vdotr(1:ntp) > 0.0_DP) - tp%isperi(1:ntp) = 1 - elsewhere - tp%isperi = -1 - end where - else - if (param%qmin_coord == "HELIO") then - do i = 1, ntp - vdotr(i) = dot_product(tp%xh(:, i), tp%vh(:, i)) - if (tp%isperi(i) == -1) then - if (vdotr(i) >= 0.0_DP) then - tp%isperi(i) = 0 - call orbel_xv2aeq(tp%mu(i), tp%xh(:, i), tp%vh(:, i), tp%atp(i), e, tp%peri(i)) - end if + allocate(vdotr(ntp)) + if (param%qmin_coord == "HELIO") then + do i = 1, ntp + vdotr(i) = dot_product(tp%xh(:, i), tp%vh(:, i)) + if (tp%isperi(i) == -1) then + if (vdotr(i) >= 0.0_DP) then + tp%isperi(i) = 0 + call orbel_xv2aeq(tp%mu(i), tp%xh(:, i), tp%vh(:, i), tp%atp(i), e, tp%peri(i)) + end if + else + if (vdotr(i) > 0.0_DP) then + tp%isperi(i) = 1 else - if (vdotr(i) > 0.0_DP) then - tp%isperi(i) = 1 - else - tp%isperi(i) = -1 - end if + tp%isperi(i) = -1 + end if + end if + end do + else + do i = 1, ntp + vdotr(i) = dot_product(tp%xb(:, i), tp%vb(:, i)) + if (tp%isperi(i) == -1) then + if (vdotr(i) >= 0.0_DP) then + tp%isperi(i) = 0 + call orbel_xv2aeq(system%msys, tp%xb(:, i), tp%vb(:, i), tp%atp(i), e, tp%peri(i)) end if - end do - else - do i = 1, ntp - vdotr(i) = dot_product(tp%xb(:, i), tp%vb(:, i)) - if (tp%isperi(i) == -1) then - if (vdotr(i) >= 0.0_DP) then - tp%isperi(i) = 0 - call orbel_xv2aeq(system%msys, tp%xb(:, i), tp%vb(:, i), tp%atp(i), e, tp%peri(i)) - end if + else + if (vdotr(i) > 0.0_DP) then + tp%isperi(i) = 1 else - if (vdotr(i) > 0.0_DP) then - tp%isperi(i) = 1 - else - tp%isperi(i) = -1 - end if + tp%isperi(i) = -1 end if - end do - end if + end if + end do end if end associate return From 1c8d750a27e5ac5bce9ea652f10c29380b5a0aff Mon Sep 17 00:00:00 2001 From: David A Minton Date: Tue, 13 Jul 2021 07:21:39 -0400 Subject: [PATCH 23/23] Moved rotation and tide variables to base swiftest_pl and swiftest_cb classes --- src/io/io.f90 | 97 +++++++++-- src/modules/swiftest_classes.f90 | 12 ++ src/modules/symba_classes.f90 | 69 -------- src/symba/symba_io.f90 | 266 ------------------------------- 4 files changed, 95 insertions(+), 349 deletions(-) diff --git a/src/io/io.f90 b/src/io/io.f90 index d04e10466..2bb46ae0e 100644 --- a/src/io/io.f90 +++ b/src/io/io.f90 @@ -120,7 +120,13 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) case ("GR") call io_toupper(param_value) if (param_value == "YES" .or. param_value == 'T') self%lgr = .true. - case ("NPLMAX", "NTPMAX", "MTINY", "PARTICLE_FILE", "ROTATION", "TIDES", "FRAGMENTATION", "SEED", "YARKOVSKY", "YORP") ! Ignore SyMBA-specific, not-yet-implemented, or obsolete input parameters + case ("ROTATION") + call io_toupper(param_value) + if (param_value == "YES" .or. param_value == 'T') self%lrotation = .true. + case ("TIDES") + call io_toupper(param_value) + if (param_value == "YES" .or. param_value == 'T') self%ltides = .true. + case ("NPLMAX", "NTPMAX", "MTINY", "PARTICLE_FILE", "FRAGMENTATION", "SEED", "YARKOVSKY", "YORP") ! Ignore SyMBA-specific, not-yet-implemented, or obsolete input parameters case default write(iomsg,*) "Unknown parameter -> ",param_name iostat = -1 @@ -192,6 +198,11 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) return end if end if + if (self%ltides .and. .not. self%lrotation) then + write(iomsg,*) 'Tides require rotation to be turned on' + iostat = -1 + return + end if write(*,*) "T0 = ",self%t0 write(*,*) "TSTOP = ",self%tstop @@ -217,6 +228,8 @@ module subroutine io_param_reader(self, unit, iotype, v_list, iostat, iomsg) write(*,*) "EXTRA_FORCE = ",self%lextra_force write(*,*) "BIG_DISCARD = ",self%lbig_discard write(*,*) "RHILL_PRESENT = ",self%lrhill_present + write(*,*) "ROTATION = ", self%lrotation + write(*,*) "TIDES = ", self%ltides write(*,*) "ENERGY = ",self%lenergy write(*,*) "MU2KG = ",self%MU2KG write(*,*) "TU2S = ",self%TU2S @@ -325,6 +338,8 @@ module subroutine io_param_writer(self, unit, iotype, v_list, iostat, iomsg) write(param_name, Afmt) "CHK_CLOSE"; write(param_value, Lfmt) param%lclose; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "ENERGY"; write(param_value, Lfmt) param%lenergy; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "GR"; write(param_value, Lfmt) param%lgr; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "ROTATION"; write(param_value, Lfmt) param%lrotation; write(unit, Afmt) adjustl(param_name), adjustl(param_value) + write(param_name, Afmt) "TIDES"; write(param_value, Lfmt) param%ltides; write(unit, Afmt) adjustl(param_name), adjustl(param_value) iostat = 0 iomsg = "UDIO not implemented" end associate @@ -610,6 +625,14 @@ module subroutine io_read_body_in(self, param) else self%radius(i) = 0.0_DP end if + if (param%lrotation) then + read(iu, iostat = ierr) self%Ip(:, i) + read(iu, iostat = ierr) self%rot(:, i) + end if + if (param%ltides) then + read(iu, iostat = ierr) self%k2(i) + read(iu, iostat = ierr) self%Q(i) + end if class is (swiftest_tp) read(iu, *, iostat = ierr) self%id(i) end select @@ -811,11 +834,23 @@ module subroutine io_read_frame_body(self, iu, param, form, ierr) read(iu, iostat = ierr) self%vh(2, 1:n) read(iu, iostat = ierr) self%vh(3, 1:n) end select - select type(self) + select type(pl => self) class is (swiftest_pl) ! Additional output if the passed polymorphic object is a massive body - read(iu, iostat = ierr) self%Gmass(1:n) - self%mass(1:n) = self%Gmass / param%GU - read(iu, iostat = ierr) self%radius(1:n) + read(iu, iostat = ierr) pl%Gmass(1:n) + pl%mass(1:n) = pl%Gmass / param%GU + read(iu, iostat = ierr) pl%radius(1:n) + if (param%lrotation) then + read(iu, iostat = ierr) pl%rot(1, 1:n) + read(iu, iostat = ierr) pl%rot(2, 1:n) + read(iu, iostat = ierr) pl%rot(3, 1:n) + read(iu, iostat = ierr) pl%Ip(1, 1:n) + read(iu, iostat = ierr) pl%Ip(2, 1:n) + read(iu, iostat = ierr) pl%Ip(3, 1:n) + end if + if (param%ltides) then + read(iu, iostat = ierr) pl%k2(1:n) + read(iu, iostat = ierr) pl%Q(1:n) + end if end select end associate @@ -849,6 +884,14 @@ module subroutine io_read_frame_cb(self, iu, param, form, ierr) read(iu, iostat = ierr) self%radius read(iu, iostat = ierr) self%j2rp2 read(iu, iostat = ierr) self%j4rp4 + if (param%lrotation) then + read(iu, iostat = ierr) self%Ip(:) + read(iu, iostat = ierr) self%rot(:) + end if + if (param%ltides) then + read(iu, iostat = ierr) self%k2 + read(iu, iostat = ierr) self%Q + end if if (ierr /=0) then write(*,*) 'Error reading central body data' call util_exit(FAILURE) @@ -1133,10 +1176,22 @@ module subroutine io_write_frame_body(self, iu, param) write(iu) self%vh(2, 1:n) write(iu) self%vh(3, 1:n) end select - select type(self) + select type(pl => self) class is (swiftest_pl) ! Additional output if the passed polymorphic object is a massive body - write(iu) self%Gmass(1:n) - write(iu) self%radius(1:n) + write(iu) pl%Gmass(1:n) + write(iu) pl%radius(1:n) + if (param%lrotation) then + write(iu) pl%rot(1, 1:n) + write(iu) pl%rot(2, 1:n) + write(iu) pl%rot(3, 1:n) + write(iu) pl%Ip(1, 1:n) + write(iu) pl%Ip(2, 1:n) + write(iu) pl%Ip(3, 1:n) + end if + if (param%ltides) then + write(iu) pl%k2(1:n) + write(iu) pl%Q(1:n) + end if end select end associate @@ -1156,12 +1211,26 @@ module subroutine io_write_frame_cb(self, iu, param) integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - write(iu) self%id - !write(iu) self%name - write(iu) self%Gmass - write(iu) self%radius - write(iu) self%j2rp2 - write(iu) self%j4rp4 + associate(cb => self) + !write(iu) cb%name + write(iu) cb%id + write(iu) cb%Gmass + write(iu) cb%radius + write(iu) cb%j2rp2 + write(iu) cb%j4rp4 + if (param%lrotation) then + write(iu) cb%rot(1) + write(iu) cb%rot(2) + write(iu) cb%rot(3) + write(iu) cb%Ip(1) + write(iu) cb%Ip(2) + write(iu) cb%Ip(3) + end if + if (param%ltides) then + write(iu) cb%k2 + write(iu) cb%Q + end if + end associate return end subroutine io_write_frame_cb diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index a5885255c..8efe47fe9 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -67,6 +67,8 @@ module swiftest_classes logical :: lclose = .false. !! Turn on close encounters logical :: lenergy = .false. !! Track the total energy of the system logical :: loblatecb = .false. !! Calculate acceleration from oblate central body (automatically turns true if nonzero J2 is input) + logical :: lrotation = .false. !! Include rotation states of big bodies + logical :: ltides = .false. !! Include tidal dissipation ! Future features not implemented or in development logical :: lgr = .false. !! Turn on GR @@ -114,6 +116,12 @@ module swiftest_classes real(DP), dimension(NDIM) :: xb = 0.0_DP !! Barycentric position (units DU) real(DP), dimension(NDIM) :: vb = 0.0_DP !! Barycentric velocity (units DU / TU) real(DP), dimension(NDIM) :: agr = 0.0_DP !! Acceleration due to post-Newtonian correction + real(DP), dimension(NDIM) :: Ip = 0.0_DP !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. + real(DP), dimension(NDIM) :: rot = 0.0_DP !! Body rotation vector in inertial coordinate frame (units rad / TU) + real(DP) :: k2 = 0.0_DP !! Tidal Love number + real(DP) :: Q = 0.0_DP !! Tidal quality factor + real(DP), dimension(NDIM) :: L0 = 0.0_DP !! Initial angular momentum of the central body + real(DP), dimension(NDIM) :: dL = 0.0_DP !! Change in angular momentum of the central body contains private procedure, public :: initialize => io_read_cb_in !! I/O routine for reading in central body data @@ -192,6 +200,10 @@ module swiftest_classes real(DP), dimension(:,:), allocatable :: xend !! Position at end of step real(DP), dimension(:,:), allocatable :: vbeg !! Velocity at beginning of step real(DP), dimension(:), allocatable :: density !! Body mass density - calculated internally (units MU / DU**3) + real(DP), dimension(:,:), allocatable :: Ip !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. + real(DP), dimension(:,:), allocatable :: rot !! Body rotation vector in inertial coordinate frame (units rad / TU) + real(DP), dimension(:), allocatable :: k2 !! Tidal Love number + real(DP), dimension(:), allocatable :: Q !! Tidal quality factor !! Note to developers: If you add components to this class, be sure to update methods and subroutines that traverse the !! component list, such as setup_pl and util_spill_pl contains diff --git a/src/modules/symba_classes.f90 b/src/modules/symba_classes.f90 index 2dad53567..5b712c9de 100644 --- a/src/modules/symba_classes.f90 +++ b/src/modules/symba_classes.f90 @@ -20,8 +20,6 @@ module symba_classes real(DP) :: MTINY = -1.0_DP !! Smallest mass that is fully gravitating integer(I4B), dimension(:), allocatable :: seed !! Random seeds logical :: lfragmentation = .false. !! Do fragmentation modeling instead of simple merger. - logical :: lrotation = .false. !! Include rotation states of big bodies - logical :: ltides = .false. !! Include tidal dissipation contains private procedure, public :: reader => symba_io_param_reader @@ -33,21 +31,12 @@ module symba_classes !******************************************************************************************************************************* !> SyMBA central body particle class type, public, extends(helio_cb) :: symba_cb - real(DP), dimension(NDIM) :: Ip = 0.0_DP !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). Principal axis rotation assumed. - real(DP), dimension(NDIM) :: rot = 0.0_DP !! Body rotation vector in inertial coordinate frame (units rad / TU) - real(DP) :: k2 = 0.0_DP !! Tidal Love number - real(DP) :: Q = 0.0_DP !! Tidal quality factor - real(DP), dimension(NDIM) :: L0 = 0.0_DP !! Initial angular momentum of the central body - real(DP), dimension(NDIM) :: dL = 0.0_DP !! Change in angular momentum of the central body real(DP) :: M0 = 0.0_DP !! Initial mass of the central body real(DP) :: dM = 0.0_DP !! Change in mass of the central body real(DP) :: R0 = 0.0_DP !! Initial radius of the central body real(DP) :: dR = 0.0_DP !! Change in the radius of the central body contains private - procedure, public :: initialize => symba_io_read_cb_in !! I/O routine for reading in particle info data - procedure, public :: read_frame => symba_io_read_frame_cb !! I/O routine for reading out a single frame of time-series data for the central bod - procedure, public :: write_frame => symba_io_write_frame_cb !! I/O routine for writing out a single frame of time-series data for the central body end type symba_cb !******************************************************************************************************************************** @@ -83,11 +72,6 @@ module symba_classes !******************************************************************************************************************************* !> SyMBA massive body class type, public, extends(helio_pl) :: symba_pl - real(DP), dimension(:,:), allocatable :: Ip !! Unitless principal moments of inertia (I1, I2, I3) / (MR**2). - !! Principal axis rotation assumed. - real(DP), dimension(:,:), allocatable :: rot !! Body rotation vector in inertial coordinate frame (units rad / TU) - real(DP), dimension(:), allocatable :: k2 !! Tidal Love number - real(DP), dimension(:), allocatable :: Q !! Tidal quality factor logical, dimension(:), allocatable :: lcollision !! flag indicating whether body has merged with another this time step logical, dimension(:), allocatable :: lencounter !! flag indicating whether body is part of an encounter this time step integer(I4B), dimension(:), allocatable :: nplenc !! number of encounters with other planets this time step @@ -103,9 +87,6 @@ module symba_classes private procedure, public :: discard => symba_discard_pl !! Process massive body discards procedure, public :: encounter_check => symba_encounter_check_pl !! Checks if massive bodies are going through close encounters with each other - procedure, public :: read_frame => symba_io_read_frame_pl !! I/O routine for reading out a single frame of time-series data for a massive body - procedure, public :: initialize => symba_io_read_pl_in !! I/O routine for reading in a massive body structure from file with SyMBA-specific parameters - procedure, public :: write_frame => symba_io_write_frame_pl !! I/O routine for writing out a single frame of time-series data for a massive body procedure, public :: setup => symba_setup_pl !! Constructor method - Allocates space for number of particle end type symba_pl @@ -234,23 +215,6 @@ module subroutine symba_io_initialize_particle_info(self, param) class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters end subroutine symba_io_initialize_particle_info - module subroutine symba_io_read_cb_in(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_cb), intent(inout) :: self - class(swiftest_parameters), intent(inout) :: param - end subroutine symba_io_read_cb_in - - module subroutine symba_io_read_frame_cb(self, iu, param, form, ierr) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_cb), intent(inout) :: self !! Swiftest central body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - character(*), intent(in) :: form !! Input format code ("XV" or "EL") - integer(I4B), intent(out) :: ierr !! Error code - end subroutine symba_io_read_frame_cb - module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) use swiftest_classes, only : swiftest_parameters implicit none @@ -261,31 +225,6 @@ module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) integer(I4B), intent(out) :: ierr !! Error code end subroutine symba_io_read_frame_info - module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_pl), intent(inout) :: self !! Swiftest particle object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - character(*), intent(in) :: form !! Input format code ("XV" or "EL") - integer(I4B), intent(out) :: ierr !! Error code - end subroutine symba_io_read_frame_pl - - module subroutine symba_io_read_pl_in(self, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - end subroutine symba_io_read_pl_in - - module subroutine symba_io_write_frame_cb(self, iu, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_cb), intent(in) :: self !! SyMBA massive body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - end subroutine symba_io_write_frame_cb - module subroutine symba_io_write_frame_info(self, iu, param) use swiftest_classes, only : swiftest_parameters implicit none @@ -294,14 +233,6 @@ module subroutine symba_io_write_frame_info(self, iu, param) class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine symba_io_write_frame_info - module subroutine symba_io_write_frame_pl(self, iu, param) - use swiftest_classes, only : swiftest_parameters - implicit none - class(symba_pl), intent(in) :: self !! SyMBA massive body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - end subroutine symba_io_write_frame_pl - module subroutine symba_setup_pl(self,n) implicit none class(symba_pl), intent(inout) :: self !! SyMBA test particle object diff --git a/src/symba/symba_io.f90 b/src/symba/symba_io.f90 index 67c5f979d..bebb225b5 100644 --- a/src/symba/symba_io.f90 +++ b/src/symba/symba_io.f90 @@ -67,12 +67,6 @@ module subroutine symba_io_param_reader(self, unit, iotype, v_list, iostat, ioms case ("FRAGMENTATION") call io_toupper(param_value) if (param_value == "YES" .or. param_value == "T") self%lfragmentation = .true. - case ("ROTATION") - call io_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%lrotation = .true. - case ("TIDES") - call io_toupper(param_value) - if (param_value == "YES" .or. param_value == 'T') self%ltides = .true. case ("MTINY") read(param_value, *) param%mtiny case("SEED") @@ -112,8 +106,6 @@ module subroutine symba_io_param_reader(self, unit, iotype, v_list, iostat, ioms end if write(*,*) "SEED: N,VAL = ",size(param%seed), param%seed(:) end if - write(*,*) "ROTATION = ", param%lrotation - write(*,*) "TIDES = ", param%ltides if (self%mtiny < 0.0_DP) then write(iomsg,*) "MTINY invalid or not set: ", self%mtiny @@ -169,8 +161,6 @@ module subroutine symba_io_param_writer(self, unit, iotype, v_list, iostat, ioms ! For the "SEED" parameter line, the first value will be the size of the seed array and the rest will be the seed array elements write(param_name, Afmt) "PARTICLE_FILE"; write(param_value, Afmt) trim(adjustl(param%particle_file)); write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "MTINY"; write(param_value, Rfmt) param%mtiny; write(unit, Afmt) adjustl(param_name), adjustl(param_value) - write(param_name, Afmt) "ROTATION"; write(param_value, Lfmt) param%lrotation; write(unit, Afmt) adjustl(param_name), adjustl(param_value) - write(param_name, Afmt) "TIDES"; write(param_value, Lfmt) param%ltides; write(unit, Afmt) adjustl(param_name), adjustl(param_value) write(param_name, Afmt) "FRAGMENTATION"; write(param_value, Lfmt) param%lfragmentation; write(unit, Afmt) adjustl(param_name), adjustl(param_value) if (param%lfragmentation) then write(param_name, Afmt) "SEED" @@ -197,81 +187,6 @@ module subroutine symba_io_param_writer(self, unit, iotype, v_list, iostat, ioms end subroutine symba_io_param_writer - module subroutine symba_io_read_frame_cb(self, iu, param, form, ierr) - !! author: David A. Minton - !! - !! Reads a frame of output of central body data to the binary output file - !! - !! Adapted from David E. Kaufmann's Swifter routine io_read_frame.f90 - !! Adapted from Hal Levison's Swift routine io_read_frame.F - implicit none - ! Arguments - class(symba_cb), intent(inout) :: self !! Swiftest central body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - character(*), intent(in) :: form !! Input format code ("XV" or "EL") - integer(I4B), intent(out) :: ierr !! Error code - - call io_read_frame_cb(self, iu, param, form, ierr) - select type(param) - class is (symba_parameters) - if (param%lrotation) then - read(iu, iostat = ierr) self%Ip(:) - read(iu, iostat = ierr) self%rot(:) - end if - if (param%ltides) then - read(iu, iostat = ierr) self%k2 - read(iu, iostat = ierr) self%Q - end if - end select - if (ierr /=0) then - write(*,*) 'Error reading SyMBA central body data' - call util_exit(FAILURE) - end if - return - end subroutine symba_io_read_frame_cb - - module subroutine symba_io_read_frame_pl(self, iu, param, form, ierr) - !! author: David A. Minton - !! - !! Reads a frame of output of a SyMBA massive body object - !! - !! Adapted from David E. Kaufmann's Swifter routine io_read_frame.f90 - !! Adapted from Hal Levison's Swift routine io_read_frame.F - implicit none - ! Arguments - class(symba_pl), intent(inout) :: self !! Swiftest particle object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - character(*), intent(in) :: form !! Input format code ("XV" or "EL") - integer(I4B), intent(out) :: ierr !! Error code - - call io_read_frame_body(self, iu, param, form, ierr) - select type(param) - class is (symba_parameters) - associate(pl => self, npl => self%nbody) - if (param%lrotation) then - read(iu, iostat = ierr) pl%rot(1, 1:npl) - read(iu, iostat = ierr) pl%rot(2, 1:npl) - read(iu, iostat = ierr) pl%rot(3, 1:npl) - read(iu, iostat = ierr) pl%Ip(1, 1:npl) - read(iu, iostat = ierr) pl%Ip(2, 1:npl) - read(iu, iostat = ierr) pl%Ip(3, 1:npl) - end if - if (param%ltides) then - read(iu, iostat = ierr) pl%k2(1:npl) - read(iu, iostat = ierr) pl%Q(1:npl) - end if - end associate - end select - - if (ierr /=0) then - write(*,*) 'Error reading SyMBA massive body body data' - call util_exit(FAILURE) - end if - return - end subroutine symba_io_read_frame_pl - module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) !! author: David A. Minton !! @@ -286,159 +201,6 @@ module subroutine symba_io_read_frame_info(self, iu, param, form, ierr) ierr = 0 end subroutine symba_io_read_frame_info - module subroutine symba_io_read_cb_in(self, param) - !! author: David A. Minton - !! - !! Reads in central body data - !! - !! Adapted from David E. Kaufmann's Swifter routine swiftest_init_pl.f90 - !! Adapted from Martin Duncan's Swift routine swiftest_init_pl.f - implicit none - ! Arguments - class(symba_cb), intent(inout) :: self - class(swiftest_parameters), intent(inout) :: param - ! Internals - integer(I4B), parameter :: LUN = 7 !! Unit number of input file - integer(I4B) :: iu = LUN - integer(I4B) :: ierr - logical :: is_ascii - real(DP) :: t - real(QP) :: val - - select type(param) - class is (symba_parameters) - ierr = 0 - is_ascii = (param%in_type == 'ASCII') - if (is_ascii) then - open(unit = iu, file = param%incbfile, status = 'old', form = 'FORMATTED', iostat = ierr) - read(iu, *, iostat = ierr) val - self%Gmass = real(val, kind=DP) - self%mass = real(val / param%GU, kind=DP) - read(iu, *, iostat = ierr) self%radius - read(iu, *, iostat = ierr) self%j2rp2 - read(iu, *, iostat = ierr) self%j4rp4 - if (param%lrotation) then - read(iu, *, iostat = ierr) self%Ip(:) - read(iu, *, iostat = ierr) self%rot(:) - end if - if (param%ltides) then - read(iu, *, iostat = ierr) self%k2 - read(iu, *, iostat = ierr) self%Q - end if - else - open(unit = iu, file = param%incbfile, status = 'old', form = 'UNFORMATTED', iostat = ierr) - call self%read_frame(iu, param, XV, ierr) - end if - close(iu) - if (ierr /= 0) then - write(*,*) 'Error opening massive body initial conditions file ',trim(adjustl(param%incbfile)) - call util_exit(FAILURE) - end if - if (self%j2rp2 /= 0.0_DP) param%loblatecb = .true. - end select - - return - end subroutine symba_io_read_cb_in - - module subroutine symba_io_read_pl_in(self, param) - !! author: The Purdue Swiftest Team - David A. Minton, Carlisle A. Wishard, Jennifer L.L. Pouplin, and Jacob R. Elliott - !! - !! Read in either test particle or massive body data - !! - !! Adapted from David E. Kaufmann's Swifter routine swiftest_init_pl.f90 and swiftest_init_tp.f90 - !! Adapted from Martin Duncan's Swift routine swiftest_init_pl.f and swiftest_init_tp.f - implicit none - ! Arguments - class(symba_pl), intent(inout) :: self !! Swiftest particle object - class(swiftest_parameters), intent(inout) :: param !! Current run configuration parameters - ! Internals - integer(I4B), parameter :: LUN = 7 !! Unit number of input file - integer(I4B) :: iu = LUN - integer(I4B) :: i, ierr, nbody - logical :: is_ascii - character(len=:), allocatable :: infile - real(DP) :: t - real(QP) :: val - - select type(param) - class is (symba_parameters) - ierr = 0 - is_ascii = (param%in_type == 'ASCII') - select case(param%in_type) - case(ASCII_TYPE) - open(unit = iu, file = infile, status = 'old', form = 'FORMATTED', iostat = ierr) - read(iu, *, iostat = ierr) nbody - call self%setup(nbody) - if (nbody > 0) then - do i = 1, nbody - read(iu, *, iostat = ierr) self%id(i), val - self%mass(i) = real(val / param%GU, kind=DP) - self%Gmass(i) = real(val, kind=DP) - read(iu, *, iostat = ierr) self%radius(i) - if (param%lrotation) then - read(iu, iostat = ierr) self%Ip(:, i) - read(iu, iostat = ierr) self%rot(:, i) - end if - if (param%ltides) then - read(iu, iostat = ierr) self%k2(i) - read(iu, iostat = ierr) self%Q(i) - end if - if (ierr /= 0 ) exit - read(iu, *, iostat = ierr) self%xh(1, i), self%xh(2, i), self%xh(3, i) - read(iu, *, iostat = ierr) self%vh(1, i), self%vh(2, i), self%vh(3, i) - if (ierr /= 0 ) exit - self%status(i) = ACTIVE - end do - end if - case (REAL4_TYPE, REAL8_TYPE) - open(unit = iu, file = infile, status = 'old', form = 'UNFORMATTED', iostat = ierr) - read(iu, iostat = ierr) nbody - call self%setup(nbody) - if (nbody > 0) then - call self%read_frame(iu, param, XV, ierr) - self%status(:) = ACTIVE - end if - case default - write(*,*) trim(adjustl(param%in_type)) // ' is an unrecognized file type' - ierr = -1 - end select - close(iu) - if (ierr /= 0 ) then - write(*,*) 'Error reading in initial conditions from ',trim(adjustl(infile)) - call util_exit(FAILURE) - end if - end select - - return - end subroutine symba_io_read_pl_in - - module subroutine symba_io_write_frame_cb(self, iu, param) - !! author: David A. Minton - !! - !! Writes a single frame of a SyMBA pl file - implicit none - class(symba_cb), intent(in) :: self !! SyMBA massive body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - - call io_write_frame_cb(self, iu, param) - select type(param) - class is (symba_parameters) - if (param%lrotation) then - write(iu) self%rot(1) - write(iu) self%rot(2) - write(iu) self%rot(3) - write(iu) self%Ip(1) - write(iu) self%Ip(2) - write(iu) self%Ip(3) - end if - if (param%ltides) then - write(iu) self%k2 - write(iu) self%Q - end if - end select - end subroutine symba_io_write_frame_cb - module subroutine symba_io_write_frame_info(self, iu, param) implicit none class(symba_particle_info), intent(in) :: self !! SyMBA particle info object @@ -446,34 +208,6 @@ module subroutine symba_io_write_frame_info(self, iu, param) class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters end subroutine symba_io_write_frame_info - module subroutine symba_io_write_frame_pl(self, iu, param) - !! author: David A. Minton - !! - !! Writes a single frame of a SyMBA pl file - implicit none - class(symba_pl), intent(in) :: self !! SyMBA massive body object - integer(I4B), intent(inout) :: iu !! Unit number for the output file to write frame to - class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters - - call io_write_frame_body(self, iu, param) - select type(param) - class is (symba_parameters) - associate(pl => self, npl => self%nbody) - if (param%lrotation) then - write(iu) pl%rot(1, 1:npl) - write(iu) pl%rot(2, 1:npl) - write(iu) pl%rot(3, 1:npl) - write(iu) pl%Ip(1, 1:npl) - write(iu) pl%Ip(2, 1:npl) - write(iu) pl%Ip(3, 1:npl) - end if - if (param%ltides) then - write(iu) pl%k2(1:npl) - write(iu) pl%Q(1:npl) - end if - end associate - end select - end subroutine symba_io_write_frame_pl end submodule s_symba_io