initialize_segment Subroutine

private subroutine initialize_segment(me, alt0, deadband_alt, grav_n, grav_m, ephemeris_file, gravfile)

Initialize the segment for integration.

Arguments

TypeIntentOptionalAttributesName
class(segment), intent(inout) :: me
real(kind=wp), intent(in) :: alt0
real(kind=wp), intent(in) :: deadband_alt
integer, intent(in) :: grav_n
integer, intent(in) :: grav_m
character(len=*), intent(in) :: ephemeris_file
character(len=*), intent(in) :: gravfile

Contents

Source Code


Source Code

    subroutine initialize_segment(me,alt0,deadband_alt,grav_n,grav_m,&
                                  ephemeris_file,gravfile)

    implicit none

    class(segment),intent(inout) :: me
    real(wp),intent(in) :: alt0
    real(wp),intent(in) :: deadband_alt
    integer,intent(in) :: grav_n
    integer,intent(in) :: grav_m
    character(len=*),intent(in) :: ephemeris_file
    character(len=*),intent(in) :: gravfile

    logical :: status_ok

    ! set up the integrator:
    call me%initialize_event(me%n_eoms,me%maxsteps,ballistic_derivs,&
                                [me%integrator_tol],[me%integrator_tol],&
                                 event_func,me%root_tol)

    if (me%include_third_bodies) then
        ! set up the ephemeris:
        write(output_unit,'(A)') 'loading ephemeris file: '//trim(ephemeris_file)
        call me%eph%initialize(filename=ephemeris_file,status_ok=status_ok)
        if (.not. status_ok) error stop 'error initializing ephemeris'
    end if

    ! set class variables for event function:
    me%nominal_altitude = alt0
    me%deadband = deadband_alt
    me%grav_n = grav_n
    me%grav_m = grav_m

    ! set up the force model [main body is moon]:
    write(output_unit,'(A)') 'loading gravity file: '//trim(gravfile)
    call me%grav%initialize(gravfile,me%grav_n,me%grav_m,status_ok)
    if (.not. status_ok) error stop 'error initializing gravity model'

    end subroutine initialize_segment