dust_module.f90 Source File

Copyright 2026 - The Minton Group at Purdue University This file is part of Swiftest. Swiftest is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Swiftest is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Swiftest. If not, see: https://www.gnu.org/licenses.

Swiftest submodule to model dust particles affected by radiation forces


This file depends on

sourcefile~~dust_module.f90~~EfferentGraph sourcefile~dust_module.f90 dust_module.f90 sourcefile~helio_module.f90 helio_module.f90 sourcefile~dust_module.f90->sourcefile~helio_module.f90 sourcefile~swiftest_module.f90 swiftest_module.f90 sourcefile~dust_module.f90->sourcefile~swiftest_module.f90 sourcefile~symba_module.f90 symba_module.f90 sourcefile~dust_module.f90->sourcefile~symba_module.f90 sourcefile~whm_module.f90 whm_module.f90 sourcefile~dust_module.f90->sourcefile~whm_module.f90 sourcefile~helio_module.f90->sourcefile~swiftest_module.f90 sourcefile~helio_module.f90->sourcefile~whm_module.f90 sourcefile~base_module.f90 base_module.f90 sourcefile~swiftest_module.f90->sourcefile~base_module.f90 sourcefile~collision_module.f90 collision_module.f90 sourcefile~swiftest_module.f90->sourcefile~collision_module.f90 sourcefile~encounter_module.f90 encounter_module.f90 sourcefile~swiftest_module.f90->sourcefile~encounter_module.f90 sourcefile~globals_module.f90 globals_module.f90 sourcefile~swiftest_module.f90->sourcefile~globals_module.f90 sourcefile~io_progress_bar_module.f90 io_progress_bar_module.f90 sourcefile~swiftest_module.f90->sourcefile~io_progress_bar_module.f90 sourcefile~lambda_function_module.f90 lambda_function_module.f90 sourcefile~swiftest_module.f90->sourcefile~lambda_function_module.f90 sourcefile~laplace_coefficient_module.f90 laplace_coefficient_module.f90 sourcefile~swiftest_module.f90->sourcefile~laplace_coefficient_module.f90 sourcefile~netcdf_io_module.f90 netcdf_io_module.f90 sourcefile~swiftest_module.f90->sourcefile~netcdf_io_module.f90 sourcefile~operator_module.f90 operator_module.f90 sourcefile~swiftest_module.f90->sourcefile~operator_module.f90 sourcefile~solver_module.f90 solver_module.f90 sourcefile~swiftest_module.f90->sourcefile~solver_module.f90 sourcefile~walltime_module.f90 walltime_module.f90 sourcefile~swiftest_module.f90->sourcefile~walltime_module.f90 sourcefile~symba_module.f90->sourcefile~helio_module.f90 sourcefile~symba_module.f90->sourcefile~swiftest_module.f90 sourcefile~whm_module.f90->sourcefile~swiftest_module.f90 sourcefile~base_module.f90->sourcefile~globals_module.f90 sourcefile~coarray_module.f90 coarray_module.f90 sourcefile~base_module.f90->sourcefile~coarray_module.f90 sourcefile~collision_module.f90->sourcefile~base_module.f90 sourcefile~collision_module.f90->sourcefile~encounter_module.f90 sourcefile~collision_module.f90->sourcefile~globals_module.f90 sourcefile~encounter_module.f90->sourcefile~base_module.f90 sourcefile~encounter_module.f90->sourcefile~globals_module.f90 sourcefile~encounter_module.f90->sourcefile~netcdf_io_module.f90 sourcefile~io_progress_bar_module.f90->sourcefile~base_module.f90 sourcefile~io_progress_bar_module.f90->sourcefile~globals_module.f90 sourcefile~lambda_function_module.f90->sourcefile~globals_module.f90 sourcefile~laplace_coefficient_module.f90->sourcefile~globals_module.f90 sourcefile~netcdf_io_module.f90->sourcefile~base_module.f90 sourcefile~netcdf_io_module.f90->sourcefile~globals_module.f90 sourcefile~operator_module.f90->sourcefile~globals_module.f90 sourcefile~solver_module.f90->sourcefile~base_module.f90 sourcefile~solver_module.f90->sourcefile~globals_module.f90 sourcefile~solver_module.f90->sourcefile~lambda_function_module.f90 sourcefile~walltime_module.f90->sourcefile~base_module.f90 sourcefile~walltime_module.f90->sourcefile~globals_module.f90 sourcefile~coarray_module.f90->sourcefile~globals_module.f90

Source Code

!! Copyright 2026 - The Minton Group at Purdue University
!! This file is part of Swiftest.
!! Swiftest is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License 
!! as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
!! Swiftest is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty 
!! of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
!! You should have received a copy of the GNU General Public License along with Swiftest. 
!! If not, see: https://www.gnu.org/licenses. 


!! Swiftest submodule to model dust particles affected by radiation forces

module dust
    !! author: Kaustub P Anand and David A. Minton
    !!
    !! This module defines functions used for the computation of radiation effects on massive bodies.
    !! Equations taken from Burns, Lamy & Soter (1979) Icarus 40, 1-48.

    use swiftest
    use whm
    use helio
    use symba
    implicit none
    public

    type, extends(whm_tp) :: whm_dust
       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 :: density
          !! Body mass density - calculated internally (units MU / DU**3)
    contains
        procedure :: accel_pr => whm_dust_accel_pr
    end type whm_dust


    type, extends(helio_tp) :: helio_dust
       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 :: density
          !! Body mass density - calculated internally (units MU / DU**3)
    contains
        procedure :: accel_pr => helio_dust_accel_pr
    end type helio_dust
    


    type, extends(symba_tp) :: symba_dust
      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 :: density 
         !! Body mass density - calculated internally (units MU / DU**3)
      real(DP),                dimension(:),   allocatable :: radius  
         !! Body radius (units DU)
    contains
        procedure :: accel_pr => symba_dust_accel_pr
    end type symba_dust
    

    interface 
        module subroutine whm_dust_accel_pr(self, nbody_system, param)
            implicit none
            ! Arguments
        class(whm_dust),         intent(inout) :: self
            !! Swiftest body object
        class(whm_nbody_system), intent(inout) :: nbody_system
            !! Swiftest nbody system object
        class(swiftest_parameters),   intent(in)    :: param
            !! Current run configuration parameters
        end subroutine whm_dust_accel_pr

        module subroutine helio_dust_accel_pr(self, nbody_system, param)
            implicit none
            ! Arguments
        class(helio_dust),         intent(inout) :: self
            !! Swiftest body object
        class(helio_nbody_system), intent(inout) :: nbody_system
            !! Swiftest nbody system object
        class(swiftest_parameters),   intent(in)    :: param
            !! Current run configuration parameters
        end subroutine helio_dust_accel_pr


        module subroutine symba_dust_accel_pr(self, nbody_system, param)
            implicit none
            ! Arguments
        class(symba_dust),         intent(inout) :: self
            !! Swiftest body object
        class(symba_nbody_system), intent(inout) :: nbody_system
            !! Swiftest nbody system object
        class(swiftest_parameters),   intent(in)    :: param
            !! Current run configuration parameters
        end subroutine symba_dust_accel_pr

    end interface





end module dust