From 875e4c5ae932bb58473047573a6342f3728e572e Mon Sep 17 00:00:00 2001 From: David A Minton Date: Wed, 30 Nov 2022 17:31:55 -0500 Subject: [PATCH] Created new swiftest_storage class to store simulation data between file outputs --- src/modules/swiftest_classes.f90 | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 874bfdf31..53aef6a78 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -156,10 +156,30 @@ module swiftest_classes procedure :: write_particle_info => netcdf_write_particle_info_base !! Dump contents of particle information metadata to file end type swiftest_base + type, abstract, extends(swiftest_base) :: swiftest_storage + !! An abstract superclass for a generic Swiftest object that is used to store simulation history data between file I/O + contains + procedure(abstract_store), deferred :: store !! Stores the state of the simulation in memory + procedure(abstract_dump_storage), deferred :: dump !! Dumps contents of the variable to file + end type swiftest_storage + + abstract interface + subroutine abstract_store(self) + import swiftest_storage + class(swiftest_storage), intent(inout) :: self + end subroutine abstract_store + + subroutine abstract_dump_storage(self) + import swiftest_storage + class(swiftest_storage), intent(inout) :: self + end subroutine abstract_dump_storage + end interface + + !******************************************************************************************************************************** ! swiftest_cb class definitions and methods !******************************************************************************************************************************** - !> A concrete lass for the central body in a Swiftest simulation + !> An abstract class for a generic central body in a Swiftest simulation type, abstract, extends(swiftest_base) :: swiftest_cb type(swiftest_particle_info) :: info !! Particle metadata information integer(I4B) :: id = 0 !! External identifier (unique)