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

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
daminton committed Dec 12, 2022
1 parent eb781b4 commit 25acb84
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 51 deletions.
86 changes: 45 additions & 41 deletions src/encounter/encounter_io.f90
Original file line number Diff line number Diff line change
Expand Up @@ -209,47 +209,51 @@ module subroutine encounter_io_write_frame(self, nc, param)
associate(pl => self%pl, tp => self%tp)
select type (nc)
class is (encounter_io_parameters)

call check( nf90_set_fill(nc%id, nf90_nofill, old_mode), "encounter_io_write_frame nf90_set_fill" )

call check( nf90_put_var(nc%id, nc%time_varid, self%t, start=[tslot]), "encounter_io_write_frame nf90_put_var time_varid" )
call check( nf90_put_var(nc%id, nc%loop_varid, int(self%iloop,kind=I4B), start=[tslot]), "encounter_io_write_frame nf90_put_var pl loop_varid" )

npl = pl%nbody
do i = 1, npl
idslot = pl%id(i) + 1
call check( nf90_put_var(nc%id, nc%id_varid, pl%id(i), start=[idslot]), "encounter_io_write_frame nf90_put_var pl id_varid" )
call check( nf90_put_var(nc%id, nc%rh_varid, pl%rh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl rh_varid" )
call check( nf90_put_var(nc%id, nc%vh_varid, pl%vh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl vh_varid" )
call check( nf90_put_var(nc%id, nc%Gmass_varid, pl%Gmass(i), start=[idslot, tslot]), "encounter_io_write_frame nf90_put_var pl Gmass_varid" )

if (param%lclose) call check( nf90_put_var(nc%id, nc%radius_varid, pl%radius(i), start=[idslot, tslot]), "encounter_io_write_frame nf90_put_var pl radius_varid" )

if (param%lrotation) then
call check( nf90_put_var(nc%id, nc%Ip_varid, pl%Ip(:,i), start=[1, idslot, tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl Ip_varid" )
call check( nf90_put_var(nc%id, nc%rot_varid, pl%rot(:,i), start=[1,idslot, tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl rotx_varid" )
end if

charstring = trim(adjustl(pl%info(i)%name))
call check( nf90_put_var(nc%id, nc%name_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var pl name_varid" )
charstring = trim(adjustl(pl%info(i)%particle_type))
call check( nf90_put_var(nc%id, nc%ptype_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var pl particle_type_varid" )
end do

ntp = tp%nbody
do i = 1, ntp
idslot = tp%id(i) + 1
call check( nf90_put_var(nc%id, nc%id_varid, tp%id(i), start=[idslot]), "encounter_io_write_frame nf90_put_var tp id_varid" )
call check( nf90_put_var(nc%id, nc%rh_varid, tp%rh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var tp rh_varid" )
call check( nf90_put_var(nc%id, nc%vh_varid, tp%vh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var tp vh_varid" )

charstring = trim(adjustl(tp%info(i)%name))
call check( nf90_put_var(nc%id, nc%name_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var tp name_varid" )
charstring = trim(adjustl(tp%info(i)%particle_type))
call check( nf90_put_var(nc%id, nc%ptype_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var tp particle_type_varid" )
end do

call check( nf90_set_fill(nc%id, old_mode, old_mode) )
select type (param)
class is (symba_parameters)

call check( nf90_set_fill(nc%id, nf90_nofill, old_mode), "encounter_io_write_frame nf90_set_fill" )

call check( nf90_put_var(nc%id, nc%time_varid, self%t, start=[tslot]), "encounter_io_write_frame nf90_put_var time_varid" )
call check( nf90_put_var(nc%id, nc%loop_varid, int(self%iloop,kind=I4B), start=[tslot]), "encounter_io_write_frame nf90_put_var pl loop_varid" )

npl = pl%nbody
do i = 1, npl
idslot = pl%id(i) + 1
idslot = param%encounter_history%idmap(pl%id(i))
call check( nf90_put_var(nc%id, nc%id_varid, pl%id(i), start=[idslot]), "encounter_io_write_frame nf90_put_var pl id_varid" )
call check( nf90_put_var(nc%id, nc%rh_varid, pl%rh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl rh_varid" )
call check( nf90_put_var(nc%id, nc%vh_varid, pl%vh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl vh_varid" )
call check( nf90_put_var(nc%id, nc%Gmass_varid, pl%Gmass(i), start=[idslot, tslot]), "encounter_io_write_frame nf90_put_var pl Gmass_varid" )

if (param%lclose) call check( nf90_put_var(nc%id, nc%radius_varid, pl%radius(i), start=[idslot, tslot]), "encounter_io_write_frame nf90_put_var pl radius_varid" )

if (param%lrotation) then
call check( nf90_put_var(nc%id, nc%Ip_varid, pl%Ip(:,i), start=[1, idslot, tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl Ip_varid" )
call check( nf90_put_var(nc%id, nc%rot_varid, pl%rot(:,i), start=[1,idslot, tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var pl rotx_varid" )
end if

charstring = trim(adjustl(pl%info(i)%name))
call check( nf90_put_var(nc%id, nc%name_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var pl name_varid" )
charstring = trim(adjustl(pl%info(i)%particle_type))
call check( nf90_put_var(nc%id, nc%ptype_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var pl particle_type_varid" )
end do

ntp = tp%nbody
do i = 1, ntp
idslot = tp%id(i) + 1
call check( nf90_put_var(nc%id, nc%id_varid, tp%id(i), start=[idslot]), "encounter_io_write_frame nf90_put_var tp id_varid" )
call check( nf90_put_var(nc%id, nc%rh_varid, tp%rh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var tp rh_varid" )
call check( nf90_put_var(nc%id, nc%vh_varid, tp%vh(:,i), start=[1,idslot,tslot], count=[NDIM,1,1]), "encounter_io_write_frame nf90_put_var tp vh_varid" )

charstring = trim(adjustl(tp%info(i)%name))
call check( nf90_put_var(nc%id, nc%name_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var tp name_varid" )
charstring = trim(adjustl(tp%info(i)%particle_type))
call check( nf90_put_var(nc%id, nc%ptype_varid, charstring, start=[1, idslot], count=[len(charstring), 1]), "encounter_io_write_frame nf90_put_var tp particle_type_varid" )
end do

call check( nf90_set_fill(nc%id, old_mode, old_mode) )
end select
end select
end associate

Expand Down
8 changes: 4 additions & 4 deletions src/encounter/encounter_util.f90
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ module subroutine encounter_util_final_storage(self)
end subroutine encounter_util_final_storage


module subroutine encounter_util_index_map_storage(self)
module subroutine encounter_util_index_map_encounter(self)
!! author: David A. Minton
!!
!! Maps body id values to storage index values so we don't have to use unlimited dimensions for id.
Expand Down Expand Up @@ -229,11 +229,11 @@ module subroutine encounter_util_index_map_storage(self)
self%nt = size(self%tvals)

return
end subroutine encounter_util_index_map_storage
end subroutine encounter_util_index_map_encounter



module subroutine encounter_util_index_map_collision_storage(self)
module subroutine encounter_util_index_map_collision(self)
!! author: David A. Minton
!!
!! Maps body id values to storage index values so we don't have to use unlimited dimensions for id
Expand All @@ -243,7 +243,7 @@ module subroutine encounter_util_index_map_collision_storage(self)
! Internals

return
end subroutine encounter_util_index_map_collision_storage
end subroutine encounter_util_index_map_collision


module subroutine encounter_util_resize_list(self, nnew)
Expand Down
12 changes: 6 additions & 6 deletions src/modules/encounter_classes.f90
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ module encounter_classes
type, extends(swiftest_storage) :: collision_storage
contains
procedure :: dump => encounter_io_dump_collision !! Dumps contents of encounter history to file
procedure :: make_index_map => encounter_util_index_map_collision_storage !! Maps body id values to storage index values so we don't have to use unlimited dimensions for id
procedure :: make_index_map => encounter_util_index_map_collision !! Maps body id values to storage index values so we don't have to use unlimited dimensions for id
procedure :: take_snapshot => encounter_util_snapshot_collision !! Take a minimal snapshot of the system through an encounter
final :: encounter_util_final_collision_storage
end type collision_storage
Expand All @@ -77,7 +77,7 @@ module encounter_classes
type, extends(swiftest_storage) :: encounter_storage
contains
procedure :: dump => encounter_io_dump_encounter !! Dumps contents of encounter history to file
procedure :: make_index_map => encounter_util_index_map_storage !! Maps body id values to storage index values so we don't have to use unlimited dimensions for id
procedure :: make_index_map => encounter_util_index_map_encounter !! Maps body id values to storage index values so we don't have to use unlimited dimensions for id
procedure :: take_snapshot => encounter_util_snapshot_encounter !! Take a minimal snapshot of the system through an encounter
final :: encounter_util_final_storage
end type encounter_storage
Expand Down Expand Up @@ -300,15 +300,15 @@ module subroutine encounter_util_final_storage(self)
type(encounter_storage(*)), intent(inout) :: self !! SyMBA nbody system object
end subroutine encounter_util_final_storage

module subroutine encounter_util_index_map_collision_storage(self)
module subroutine encounter_util_index_map_collision(self)
implicit none
class(collision_storage(*)), intent(inout) :: self !! E
end subroutine encounter_util_index_map_collision_storage
end subroutine encounter_util_index_map_collision

module subroutine encounter_util_index_map_storage(self)
module subroutine encounter_util_index_map_encounter(self)
implicit none
class(encounter_storage(*)), intent(inout) :: self !! Swiftest storage object
end subroutine encounter_util_index_map_storage
end subroutine encounter_util_index_map_encounter

module subroutine encounter_util_resize_list(self, nnew)
implicit none
Expand Down

0 comments on commit 25acb84

Please sign in to comment.