solver Module

Contains a 4th order Runge-Kutta-Fehlberg ODE solver and a linear system of equations solver


Uses

  • module~~solver~~UsesGraph module~solver solver globals globals module~solver->globals module~lambda_function lambda_function module~solver->module~lambda_function ieee_exceptions ieee_exceptions module~solver->ieee_exceptions module~base base module~solver->module~base module~lambda_function->globals module~base->globals module~coarray coarray module~base->module~coarray module~coarray->globals

Used by

  • module~~solver~~UsedByGraph module~solver solver module~swiftest swiftest module~swiftest->module~solver module~s_collision_check s_collision_check module~s_collision_check->module~swiftest module~symba symba module~s_collision_check->module~symba module~s_swiftest_orbel s_swiftest_orbel module~s_swiftest_orbel->module~swiftest module~s_helio_kick s_helio_kick module~s_helio_kick->module~swiftest module~helio helio module~s_helio_kick->module~helio module~s_fraggle_generate s_fraggle_generate module~s_fraggle_generate->module~swiftest module~fraggle fraggle module~s_fraggle_generate->module~fraggle module~s_fraggle_generate->module~symba module~s_operator_cross s_operator_cross module~s_operator_cross->module~swiftest module~s_symba_gr s_symba_gr module~s_symba_gr->module~swiftest module~s_symba_gr->module~symba module~s_tides_step_rot s_tides_step_rot module~s_tides_step_rot->module~swiftest module~fraggle->module~swiftest module~symba->module~swiftest module~symba->module~helio module~shgrav shgrav module~shgrav->module~swiftest module~whm whm module~whm->module~swiftest module~rmvs rmvs module~rmvs->module~swiftest module~rmvs->module~whm module~s_symba_step s_symba_step module~s_symba_step->module~swiftest module~s_symba_step->module~symba module~s_swiftest_user s_swiftest_user module~s_swiftest_user->module~swiftest module~s_symba_util s_symba_util module~s_symba_util->module~swiftest module~s_symba_util->module~fraggle module~s_symba_util->module~symba module~s_rmvs_encounter_check s_rmvs_encounter_check module~s_rmvs_encounter_check->module~swiftest module~s_rmvs_encounter_check->module~rmvs module~s_coarray_collect s_coarray_collect module~s_coarray_collect->module~swiftest module~s_swiftest_gr s_swiftest_gr module~s_swiftest_gr->module~swiftest module~s_swiftest_io s_swiftest_io module~s_swiftest_io->module~swiftest module~s_swiftest_io->module~symba module~s_fraggle_util s_fraggle_util module~s_fraggle_util->module~swiftest module~s_fraggle_util->module~fraggle module~s_symba_kick s_symba_kick module~s_symba_kick->module~swiftest module~s_symba_kick->module~symba module~s_swiftest_discard s_swiftest_discard module~s_swiftest_discard->module~swiftest module~s_symba_encounter_check s_symba_encounter_check module~s_symba_encounter_check->module~swiftest module~s_symba_encounter_check->module~symba module~s_symba_drift s_symba_drift module~s_symba_drift->module~swiftest module~s_symba_drift->module~symba module~s_swiftest_drift s_swiftest_drift module~s_swiftest_drift->module~swiftest module~bindings_module bindings_module module~bindings_module->module~swiftest module~s_collision_regime s_collision_regime module~s_collision_regime->module~swiftest module~s_swiftest_coarray s_swiftest_coarray module~s_swiftest_coarray->module~swiftest module~s_rmvs_step s_rmvs_step module~s_rmvs_step->module~swiftest module~s_rmvs_step->module~rmvs module~s_rmvs_discard s_rmvs_discard module~s_rmvs_discard->module~swiftest module~s_rmvs_discard->module~rmvs module~s_swiftest_driver s_swiftest_driver module~s_swiftest_driver->module~swiftest module~s_shgrav_accel s_shgrav_accel module~s_shgrav_accel->module~swiftest module~s_shgrav_accel->module~shgrav module~s_encounter_util s_encounter_util module~s_encounter_util->module~swiftest module~s_swiftest_obl s_swiftest_obl module~s_swiftest_obl->module~swiftest module~s_swiftest_obl->module~shgrav module~s_rmvs_kick s_rmvs_kick module~s_rmvs_kick->module~swiftest module~s_rmvs_kick->module~rmvs program~main main program~main->module~swiftest module~s_helio_gr s_helio_gr module~s_helio_gr->module~swiftest module~s_helio_gr->module~helio module~s_collision_util s_collision_util module~s_collision_util->module~swiftest module~s_helio_util s_helio_util module~s_helio_util->module~swiftest module~s_helio_util->module~helio module~s_shgrav_pot s_shgrav_pot module~s_shgrav_pot->module~swiftest module~s_shgrav_pot->module~shgrav module~s_walltime s_walltime module~s_walltime->module~swiftest module~s_rmvs_util s_rmvs_util module~s_rmvs_util->module~swiftest module~s_rmvs_util->module~rmvs module~s_helio_step s_helio_step module~s_helio_step->module~swiftest module~s_helio_step->module~helio module~helio->module~swiftest module~helio->module~whm module~s_symba_discard s_symba_discard module~s_symba_discard->module~swiftest module~s_symba_discard->module~symba module~s_whm_coord s_whm_coord module~s_whm_coord->module~swiftest module~s_whm_coord->module~whm module~s_whm_gr s_whm_gr module~s_whm_gr->module~swiftest module~s_whm_gr->module~whm module~s_encounter_io s_encounter_io module~s_encounter_io->module~swiftest module~s_coarray_clone s_coarray_clone module~s_coarray_clone->module~swiftest module~whm_drift whm_drift module~whm_drift->module~swiftest module~whm_drift->module~whm module~s_whm_util s_whm_util module~s_whm_util->module~swiftest module~s_whm_util->module~whm module~s_whm_step s_whm_step module~s_whm_step->module~swiftest module~s_whm_step->module~whm module~s_swiftest_util s_swiftest_util module~s_swiftest_util->module~swiftest module~s_swiftest_util->module~fraggle module~s_swiftest_util->module~symba module~s_swiftest_util->module~whm module~s_swiftest_util->module~rmvs module~s_swiftest_util->module~helio module~s_helio_drift s_helio_drift module~s_helio_drift->module~swiftest module~s_helio_drift->module~helio module~s_swiftest_kick s_swiftest_kick module~s_swiftest_kick->module~swiftest module~s_encounter_check s_encounter_check module~s_encounter_check->module~swiftest module~s_whm_kick s_whm_kick module~s_whm_kick->module~swiftest module~s_whm_kick->module~whm module~s_collision_generate s_collision_generate module~s_collision_generate->module~swiftest module~s_collision_io s_collision_io module~s_collision_io->module~swiftest module~s_collision_resolve s_collision_resolve module~s_collision_resolve->module~swiftest module~s_tides_kick_getacch s_tides_kick_getacch module~s_tides_kick_getacch->module~swiftest

Contents


Interfaces

public interface solve_linear_system

  • private function solve_linear_system_dp(A, b, n, lerr) result(x)

    Solves the linear equation of the form A*x = b for x. A is an (n,n) arrays x and b are (n) arrays Uses Gaussian elimination, so will have issues if nbody_system is ill-conditioned. Uses quad precision intermidiate values, so works best on small arrays.

    Arguments

    TypeIntentOptionalAttributesName
    real(kind=DP), intent(in), dimension(:,:):: A
    real(kind=DP), intent(in), dimension(:):: b
    integer(kind=I4B), intent(in) :: n
    logical, intent(out) :: lerr

    Return Value real(kind=DP),dimension(n)

  • private function solve_linear_system_qp(A, b, n, lerr) result(x)

    Solves the linear equation of the form A*x = b for x. A is an (n,n) arrays x and b are (n) arrays Uses Gaussian elimination, so will have issues if nbody_system is ill-conditioned. Uses quad precision intermidiate values, so works best on small arrays.

    Arguments

    TypeIntentOptionalAttributesName
    real(kind=QP), intent(in), dimension(:,:):: A
    real(kind=QP), intent(in), dimension(:):: b
    integer(kind=I4B), intent(in) :: n
    logical, intent(out) :: lerr

    Return Value real(kind=QP),dimension(n)

public interface solve_roots

  • private subroutine solve_roots_dp(f, x, tol, lerr)

    Uses Brent’s method to find the root of a function f

    Arguments

    TypeIntentOptionalAttributesName
    private function f(x) result(y)
    Arguments
    TypeIntentOptionalAttributesName
    real(kind=DP), intent(in) :: x
    Return Value real(kind=DP)
    real(kind=DP), intent(inout) :: x

    Initial guess and also the final answer

    real(kind=DP), intent(in), optional :: tol

    The relative tolerance on the solution

    logical, intent(out), optional :: lerr

    Returns .true. if a root was found, otherwise returns .false.