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

Commit

Permalink
Fixed mass conservation bug. Previously, central body initial mass, r…
Browse files Browse the repository at this point in the history
…adius, and ang. mtm. values were not set when reading in a new run. Now fixed
  • Loading branch information
daminton committed Sep 22, 2022
1 parent 4c9e87a commit 887d0ef
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/netcdf/netcdf.f90
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,13 @@ module function netcdf_read_frame_system(self, iu, param) result(ierr)
cb%Gmass = rtemp(1)
cb%mass = cb%Gmass / param%GU

! Set initial central body mass for Helio bookkeeping
select type(cb)
class is (symba_cb)
cb%GM0 = cb%Gmass
end select


if (npl > 0) then
pl%Gmass(:) = pack(rtemp, plmask)
pl%mass(:) = pl%Gmass(:) / param%GU
Expand All @@ -615,6 +622,12 @@ module function netcdf_read_frame_system(self, iu, param) result(ierr)
if (param%lclose) then
call check( nf90_get_var(iu%ncid, iu%radius_varid, rtemp, start=[1, tslot]) )
cb%radius = rtemp(1)

! Set initial central body radius for SyMBA bookkeeping
select type(cb)
class is (symba_cb)
cb%R0 = cb%radius
end select
if (npl > 0) pl%radius(:) = pack(rtemp, plmask)
else
cb%radius = param%rmin
Expand Down Expand Up @@ -645,6 +658,12 @@ module function netcdf_read_frame_system(self, iu, param) result(ierr)
call check( nf90_get_var(iu%ncid, iu%rotz_varid, rtemp, start=[1, tslot]) )
cb%rot(3) = rtemp(1)
if (npl > 0) pl%rot(3,:) = pack(rtemp, plmask)

! Set initial central body angular momentum for Helio bookkeeping
select type(cb)
class is (symba_cb)
cb%L0(:) = cb%Ip(3) * cb%GM0 * cb%R0**2 * cb%rot(:)
end select
end if

if (param%ltides) then
Expand Down

0 comments on commit 887d0ef

Please sign in to comment.