Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Started working on creating the mergesub_list structure when a pl-pl …
Browse files Browse the repository at this point in the history
…collision is detected
  • Loading branch information
daminton committed Aug 2, 2021
1 parent c8b0db9 commit f40f7a1
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x2ab850525310>,\n",
" <matplotlib.lines.Line2D at 0x2ab85052d090>]"
"[<matplotlib.lines.Line2D at 0x2b6436355590>,\n",
" <matplotlib.lines.Line2D at 0x2b6436339bd0>]"
]
},
"execution_count": 6,
Expand Down Expand Up @@ -485,7 +485,7 @@
" nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])\n",
"Coordinates:\n",
" id float64 100.0\n",
" * time (y) (time (y)) float64 0.0 0.0006845 0.001369 ... 0.1492 0.1499 0.1506</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'vx'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>time (y)</span>: 221</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-459e135a-7287-42da-b8ae-9a0dbf03188e' class='xr-array-in' type='checkbox' checked><label for='section-459e135a-7287-42da-b8ae-9a0dbf03188e' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... nan nan nan nan nan nan nan nan</span></div><div class='xr-array-data'><pre>array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" * time (y) (time (y)) float64 0.0 0.0006845 0.001369 ... 0.1492 0.1499 0.1506</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'vx'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>time (y)</span>: 221</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-05ffa791-dba6-490e-a347-6eef2895c390' class='xr-array-in' type='checkbox' checked><label for='section-05ffa791-dba6-490e-a347-6eef2895c390' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... nan nan nan nan nan nan nan nan</span></div><div class='xr-array-data'><pre>array([ 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.,\n",
" 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.,\n",
Expand All @@ -501,7 +501,7 @@
" 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.,\n",
" 0., 0., nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n",
" nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])</pre></div></div></li><li class='xr-section-item'><input id='section-303d42b0-335e-41ac-8a6c-7f1fc862c2d5' class='xr-section-summary-in' type='checkbox' checked><label for='section-303d42b0-335e-41ac-8a6c-7f1fc862c2d5' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>id</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>100.0</div><input id='attrs-3a547b3c-851a-4a9b-89d9-85fd5cb6b01b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-3a547b3c-851a-4a9b-89d9-85fd5cb6b01b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-91b3bcb0-e16b-4f77-b98d-404d2b9f249e' class='xr-var-data-in' type='checkbox'><label for='data-91b3bcb0-e16b-4f77-b98d-404d2b9f249e' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(100.)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time (y)</span></div><div class='xr-var-dims'>(time (y))</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0 0.0006845 ... 0.1499 0.1506</div><input id='attrs-c314fd4c-dd70-4fd1-ad93-5db95038eb61' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c314fd4c-dd70-4fd1-ad93-5db95038eb61' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4a90fcbd-5eac-41ca-9a71-1e0f281c9638' class='xr-var-data-in' type='checkbox'><label for='data-4a90fcbd-5eac-41ca-9a71-1e0f281c9638' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0. , 0.000684, 0.001369, ..., 0.149213, 0.149897, 0.150582])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-6ff92457-942d-4f8c-9bb1-2ab62024f19a' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-6ff92457-942d-4f8c-9bb1-2ab62024f19a' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
" nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])</pre></div></div></li><li class='xr-section-item'><input id='section-1e1c9f7c-10a0-4d85-987c-6ef571bcf0c0' class='xr-section-summary-in' type='checkbox' checked><label for='section-1e1c9f7c-10a0-4d85-987c-6ef571bcf0c0' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>id</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>100.0</div><input id='attrs-86937a99-48b9-4255-b2ad-d030870e75e2' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-86937a99-48b9-4255-b2ad-d030870e75e2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-248629df-cd23-4285-8233-801ba51ab0f9' class='xr-var-data-in' type='checkbox'><label for='data-248629df-cd23-4285-8233-801ba51ab0f9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(100.)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time (y)</span></div><div class='xr-var-dims'>(time (y))</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>0.0 0.0006845 ... 0.1499 0.1506</div><input id='attrs-417059bd-e142-4a4a-a6cc-18d2989caa40' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-417059bd-e142-4a4a-a6cc-18d2989caa40' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4f78bc8d-0017-449e-9399-cb196178388c' class='xr-var-data-in' type='checkbox'><label for='data-4f78bc8d-0017-449e-9399-cb196178388c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0. , 0.000684, 0.001369, ..., 0.149213, 0.149897, 0.150582])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-c75d1d0a-1d77-4483-a5de-fd3fa2fe5416' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-c75d1d0a-1d77-4483-a5de-fd3fa2fe5416' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'vx' (time (y): 221)>\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,8 +591,8 @@
"array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\n",
"Coordinates:\n",
" * id (id) int64 101 102 103 104 105 106 107 ... 111 112 113 114 115 116\n",
" time float64 110.0</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'px'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>id</span>: 16</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-68fe10ea-ef1f-4ba7-a77c-430740095e13' class='xr-array-in' type='checkbox' checked><label for='section-68fe10ea-ef1f-4ba7-a77c-430740095e13' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0</span></div><div class='xr-array-data'><pre>array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])</pre></div></div></li><li class='xr-section-item'><input id='section-df88b4bc-6c46-45ca-94b7-b00adc9498db' class='xr-section-summary-in' type='checkbox' checked><label for='section-df88b4bc-6c46-45ca-94b7-b00adc9498db' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>id</span></div><div class='xr-var-dims'>(id)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>101 102 103 104 ... 113 114 115 116</div><input id='attrs-c76f8e4d-402e-49be-9462-76c99c61e023' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c76f8e4d-402e-49be-9462-76c99c61e023' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3da82dc2-6d43-4516-911e-842e152844d3' class='xr-var-data-in' type='checkbox'><label for='data-3da82dc2-6d43-4516-911e-842e152844d3' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,\n",
" 115, 116])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>110.0</div><input id='attrs-db177103-0946-45b3-8074-e25ddb54a6c7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-db177103-0946-45b3-8074-e25ddb54a6c7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-650cafac-02d8-4e7a-a322-e58d16f4428a' class='xr-var-data-in' type='checkbox'><label for='data-650cafac-02d8-4e7a-a322-e58d16f4428a' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(110.)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-01a452ff-18b5-42e8-8710-7a17ac440a27' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-01a452ff-18b5-42e8-8710-7a17ac440a27' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
" time float64 110.0</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'px'</div><ul class='xr-dim-list'><li><span class='xr-has-index'>id</span>: 16</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-155160da-35f1-46ed-9008-e723659fbcbd' class='xr-array-in' type='checkbox' checked><label for='section-155160da-35f1-46ed-9008-e723659fbcbd' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0</span></div><div class='xr-array-data'><pre>array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])</pre></div></div></li><li class='xr-section-item'><input id='section-f2088240-57af-4b1e-9333-8990de4d1448' class='xr-section-summary-in' type='checkbox' checked><label for='section-f2088240-57af-4b1e-9333-8990de4d1448' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>id</span></div><div class='xr-var-dims'>(id)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>101 102 103 104 ... 113 114 115 116</div><input id='attrs-0185ec9d-c3ca-4b59-a596-1484df8ce930' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-0185ec9d-c3ca-4b59-a596-1484df8ce930' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-78b84922-ca22-4097-bf93-944857fabff6' class='xr-var-data-in' type='checkbox'><label for='data-78b84922-ca22-4097-bf93-944857fabff6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,\n",
" 115, 116])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>110.0</div><input id='attrs-79493342-80a9-4b7c-95e2-9e107626dc99' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-79493342-80a9-4b7c-95e2-9e107626dc99' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-efcf6037-4be7-495b-b37c-20a2bfc2d7bd' class='xr-var-data-in' type='checkbox'><label for='data-efcf6037-4be7-495b-b37c-20a2bfc2d7bd' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array(110.)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-8dcf67c6-7884-460a-8526-ee7a6885c0b2' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-8dcf67c6-7884-460a-8526-ee7a6885c0b2' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray 'px' (id: 16)>\n",
Expand Down
16 changes: 15 additions & 1 deletion src/symba/symba_collision.f90
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,30 @@ module subroutine symba_collision_check_plplenc(self, system, param, t, dt, irec
mtot = pl%Gmass(ind1(k)) + pl%Gmass(ind2(k))
lcollision(k) = symba_collision_check_one(xr(1), xr(2), xr(3), vr(1), vr(2), vr(3), mtot, rlim, dt, plplenc_list%lvdotr(k))
end do
deallocate(lmask)

if (any(lcollision(:))) then
allocate(lmask(pl%nbody))
do k = 1, nplplenc
if (plplenc_list%status(k) /= COLLISION) cycle
if (.not.lcollision(k)) cycle

! Set this encounter as a collision and save the position and velocity vectors at the time of the collision
plplenc_list%status(k) = COLLISION
plplenc_list%xh1(:,k) = pl%xh(:,ind1(k))
plplenc_list%vb1(:,k) = pl%vb(:,ind1(k))
plplenc_list%xh2(:,k) = pl%xh(:,ind2(k))
plplenc_list%vb2(:,k) = pl%vb(:,ind2(k))

! Check to see if either of these bodies has been involved with a collision before, and if so, make this a collisional family
if (pl%lcollision(ind1(k)) .or. pl%lcollision(ind2(k))) call pl%make_family([ind1(k),ind2(k)])

! Add any of the bodies that have *not* previously been involved in a collision to the subtraction list
lmask(:) = .false.
lmask(ind1(k)) = .not.pl%lcollision(ind1(k))
lmask(ind2(k)) = .not.pl%lcollision(ind2(k))
call system%mergesub_list%append(pl, lmask)

! Set the collision flag for these to bodies to true in case they become involved in another collision later in the step
pl%lcollision(ind1(k)) = .true.
pl%lcollision(ind2(k)) = .true.
end do
Expand Down

0 comments on commit f40f7a1

Please sign in to comment.